考虑一个数组 arr
和高级索引蒙版 mask
:
import numpy as np
arr = np.arange(4).reshape(2, 2)
mask = A < 2
使用高级索引会创建一个数组的新副本。因此,不能通过"链接"一个掩码与另一个掩码或基本的切片操作来替换数组的元素:
submask = [False, True]
arr[mask][submask] = -1 # chaining 2 masks
arr[mask][:] = -1 # chaining a mask with a basic slicing operation
print(arr)
[[0 1]
[2 3]]
我有两个相关的问题:
1/ 使用链式掩码替换数组元素的最佳方法是什么?
2/ 如果高级索引返回数组的副本,那么为什么以下内容有效?
arr[mask] = -1
print(arr)
[[-1 -1]
[ 2 3]]