如果我有一個2d numpy(整數,d也是整數)數組,如下
[[0 1 2 d]
[3 4 d 5]
[6 d 7 8]]
如何將每行d(包括d)之后的所有元素(row-wise)清零?
我使用了for循環,但我想知道是否有通過numpy的矢量化方法。我剛剛看到,也許你可以減去一個triangular矩陣:
[[0 0 0 d]
[0 0 d 5]
[0 d 7 8]]
但這并不能解決我的問題,因為它需要將d之前的值清零。
EDIT:
repr(array)
array([[0, 1, 2, d],
[3, 4, d, 5],
[6, d, 7, 8]], dtype=int64)
IIUC,你可以用
cumsum
制作一個掩碼,并用它來用where
掩碼前導值:具有
cumprod
和就地修改的變體:Output:
中間掩碼(對于第一種方法,考慮non-zero個值
True
):