修改2d numpy數組中分隔符后的行中的所有元素

如果我有一個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掩碼前導值:

d = 9
a = np.array([[0, 1, 2, d],
              [3, 4, d, 5],
              [6, d, 7, 8]])

out = np.where(np.cumsum(a == d, axis=1), a, 0)

具有cumprod和就地修改的變體:

a[np.cumprod(a!=d, axis=1).astype(bool)] = 0

Output:

array([[0, 0, 0, 9],
       [0, 0, 9, 5],
       [0, 9, 7, 8]])

中間掩碼(對于第一種方法,考慮non-zero個值True):

# np.cumsum(a == d, axis=1)
array([[0, 0, 0, 1],
       [0, 0, 1, 1],
       [0, 1, 1, 1]])

# np.cumprod(a!=d, axis=1).astype(bool)
array([[ True,  True,  True, False],
       [ True,  True, False, False],
       [ True, False, False, False]])
主站蜘蛛池模板: 在线观看免费视频一区| 少妇人妻偷人精品一区二区| 亚拍精品一区二区三区| 一区二区三区视频在线观看| 无码人妻一区二区三区在线水卜樱| 国产高清一区二区三区| 国产在线观看91精品一区| 亚洲无线码一区二区三区| 国产亚洲综合精品一区二区三区| 在线精品亚洲一区二区| 91视频一区二区| 亚洲中文字幕在线无码一区二区| 伊人激情AV一区二区三区| 国产午夜毛片一区二区三区 | 无码毛片视频一区二区本码 | 国产精品毛片VA一区二区三区| 国产伦精品一区二区三区精品 | 精品免费国产一区二区三区| 无码一区二区三区AV免费| 国模无码视频一区| 伊人色综合视频一区二区三区 | 国产精品福利一区| 亚洲欧美一区二区三区日产| 精品视频一区二区三区| 无码欧精品亚洲日韩一区| 蜜桃臀无码内射一区二区三区 | 在线播放国产一区二区三区| 无遮挡免费一区二区三区| 精品女同一区二区| 亚洲爆乳精品无码一区二区| 波多野结衣AV无码久久一区| 国产一区二区在线观看视频| 日本激情一区二区三区| 精品视频午夜一区二区| 国产亚洲一区二区三区在线| 麻豆aⅴ精品无码一区二区| 中文字幕一区二区三区精彩视频 | 精品一区二区三区影院在线午夜| 亚洲福利一区二区精品秒拍| 国产精品女同一区二区| 国产免费一区二区视频|