2

假设您有一个 numpy 数组作为array([[5],[1,2],[5,6,7],[5],[5]]). 是否有一个函数,例如np.where,可用于返回[5]行值在哪里的所有行索引?例如,在上面的数组中,返回的值应该[0, 3, 4]表示[5]行号。

请注意,数组中的每一行的长度可能不同。

谢谢大家,你们都应该得到最佳答案,但我给第一个打了绿色标记:)

4

3 回答 3

3

这应该这样做:

[i[0] for i,v in np.ndenumerate(ar) if v == [5]]
=> [0, 3, 4]
于 2013-08-03T06:08:10.743 回答
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]
于 2013-08-03T06:03:19.083 回答
2

您可以在此处使用列表推导:

[i[0] for i,v in np.ndenumerate(a) if 5 in v]
#[0, 2, 3, 4]
于 2013-08-03T06:05:41.467 回答