假设您有一个 numpy 数组作为array([[5],[1,2],[5,6,7],[5],[5]])
. 是否有一个函数,例如np.where
,可用于返回[5]
行值在哪里的所有行索引?例如,在上面的数组中,返回的值应该[0, 3, 4]
表示[5]
行号。
请注意,数组中的每一行的长度可能不同。
谢谢大家,你们都应该得到最佳答案,但我给第一个打了绿色标记:)
这应该这样做:
[i[0] for i,v in np.ndenumerate(ar) if v == [5]]
=> [0, 3, 4]
如果你检查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]
您可以在此处使用列表推导:
[i[0] for i,v in np.ndenumerate(a) if 5 in v]
#[0, 2, 3, 4]