假设您有一个numpy数组array([[5],[1,2],[5,6,7],[5],[5]])
。
是否有一个函数,例如np.where
,可以用来返回[5]
是行值的所有行索引?例如,在上面的数组中,返回的值应为[0, 3, 4]
,表示[5]
行号。
请注意,数组中的每一行的长度可能不同。
谢谢大家,你们都应得到最好的答案,但我给第一个留下了绿色标记:)
答案 0 :(得分:3)
如果你检查数组的ndim
,你会发现它实际上不是一个多维数组,而是一个1d
列表对象数组。
您可以使用以下列表推导来获取5出现的索引:
[i[0] for i,v in np.ndenumerate(a) if 5 in v]
#[0, 2, 3, 4]
或者以下列表理解来获得列表正好是[5]
的索引:
[i[0] for i,v in np.ndenumerate(a) if v == [5]]
#[0, 3, 4]
答案 1 :(得分:3)
这应该这样做:
[i[0] for i,v in np.ndenumerate(ar) if v == [5]]
=> [0, 3, 4]
答案 2 :(得分:2)
您可以使用列表推导,如下所示:
[i[0] for i,v in np.ndenumerate(a) if 5 in v]
#[0, 2, 3, 4]