我想将0
分配给2d数组的不同长度的切片。
例:
import numpy as np
arr = np.array([[1,2,3,4],
[1,2,3,4],
[1,2,3,4],
[1,2,3,4]])
idxs = np.array([0,1,2,0])
给定上述数组
arr
和索引idxs
,您如何分配给不同的长度切片。这样的结果是:arr = np.array([[0,2,3,4],
[0,0,3,4],
[0,0,0,4],
[0,2,3,4]])
这些不起作用
slices = np.array([np.arange(i) for i in idxs])
arr[slices] = 0
arr[:, :idxs] = 0
最佳答案
您可以使用广播比较生成掩码,并相应地索引到arr
:
arr[np.arange(arr.shape[1]) <= idxs[:, None]] = 0
print(arr)
array([[0, 2, 3, 4],
[0, 0, 3, 4],
[0, 0, 0, 4],
[0, 2, 3, 4]])
关于python - 分配给2D NumPy数组的切片,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48876162/