我想将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/

10-09 20:10
查看更多