我想得到一个与行匹配的二维Numpy数组的索引。例如,我的数组是这样的:
vals = np.array([[0, 0],
[1, 0],
[2, 0],
[0, 1],
[1, 1],
[2, 1],
[0, 2],
[1, 2],
[2, 2],
[0, 3],
[1, 3],
[2, 3],
[0, 0],
[1, 0],
[2, 0],
[0, 1],
[1, 1],
[2, 1],
[0, 2],
[1, 2],
[2, 2],
[0, 3],
[1, 3],
[2, 3]])
我想得到与索引3和15的行[0,1]匹配的索引。当我做类似于numpy.where(vals == [0 ,1])
的事情时,我会。。。
(array([ 0, 3, 3, 4, 5, 6, 9, 12, 15, 15, 16, 17, 18, 21]), array([0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0]))
我想要索引数组([3,15])。
我不知道为什么,但这比
np.where((vals == (0, 1)).all(axis=1))
:您需要^{} 函数来获取索引:
或者,如文件所述:
您可以直接对} :
.all
返回的数组调用^{要分解它:
在数组上调用
.all
方法(使用axis=1
)可以得到True
,其中两者都是真的:要获取哪些索引是
True
:或者
我发现我的解决方案更具可读性,但正如unutbu所指出的,以下方法可能更快,并返回与
(vals == (0, 1)).all(axis=1)
相同的值:使用numpy_indexed包,您只需编写:
相关问题 更多 >
编程相关推荐