np.where等效于多维numpy数组

时间:2013-08-03 05:40:16

标签: python arrays numpy

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

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

谢谢大家,你们都应得到最好的答案,但我给第一个留下了绿色标记:)

3 个答案:

答案 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]