numpy 每行中值的第一个匹配项的索引

72qzrwbm  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(120)

我有一个2D numpy数组,我想计数值的数量(包括 certain value),直到每行出现某个值。如果该特定值不存在,则返回该行的长度。例如:

val = 2
arr = np.array([
       [2, 2, 1, 1, 0],
       [0, 3, 1, 0, 0],
       [0, 1, 2, 0, 1]
])

字符串
我希望返回array([1, 5, 3]),因为前2出现在第一列的第一行;不出现在第二行;出现在第三行的第三列。
我该怎么用催眠的方式来做呢?

esyap4oy

esyap4oy1#

In [180]: val = 2

In [181]: m = arr == val

In [182]: np.where(m.any(axis=1), m.argmax(axis=1) + 1, arr.shape[1])
Out[182]: array([1, 5, 3], dtype=int64)

字符串

  • 获取掩码是否等于val
  • 如果any值在一行中相等,则返回该行的argmax,即第一个True的索引
  • 但加上1,因为需要包括值
  • 否则,返回列数,即.shape[1]

相关问题