我有一个如下数组:
In [70]: x
Out[70]:
array([[0, 1, 2],
[3, 4, 5]])
我试图获取条件成立的每行索引,例如x > 1
。
预期输出类似于([2], [0, 1, 2])
我尝试了numpy.where
,numpy.nonzero
,但他们给出了奇怪的结果。
答案 0 :(得分:0)
一种方法 -
r,c = np.where(x>1)
out = np.split(c, np.flatnonzero(r[1:] > r[:-1])+1)
示例运行 -
In [140]: x
Out[140]:
array([[0, 2, 0, 1, 1],
[2, 2, 1, 2, 0],
[0, 2, 1, 1, 0],
[1, 0, 0, 2, 2]])
In [141]: r,c = np.where(x>1)
In [142]: np.split(c, np.flatnonzero(r[1:] > r[:-1])+1)
Out[142]: [array([1]), array([0, 1, 3]), array([1]), array([3, 4])]
或者,我们可以在最后一步使用np.unique
,如此 -
np.split(c, np.unique(r, return_index=1)[1][1:])