我有一个使用 sp.distance.cdist
获得的数组,这样的数组如下所示:
[ 0. 5.37060126 2.68530063 4.65107712 2.68530063 4.65107712
2.04846297 7.41906423 4.11190697 6.50622284 4.11190697 6.50622284]
[ 5.37060126 0. 4.65107712 2.68530063 4.65107712 2.68530063
7.41906423 2.04846297 6.50622284 4.11190697 6.50622284 4.11190697]
[ 2.68530063 4.65107712 0. 2.68530063 4.65107712 5.37060126
4.11190697 6.50622284 2.04846297 4.11190697 6.50622284 7.41906423]
[ 4.65107712 2.68530063 2.68530063 0. 5.37060126 4.65107712
6.50622284 4.11190697 4.11190697 2.04846297 7.41906423 6.50622284]
[ 2.68530063 4.65107712 4.65107712 5.37060126 0. 2.68530063
4.11190697 6.50622284 6.50622284 7.41906423 2.04846297 4.11190697]
[ 4.65107712 2.68530063 5.37060126 4.65107712 2.68530063 0.
6.50622284 4.11190697 7.41906423 6.50622284 4.11190697 2.04846297]
[ 2.04846297 7.41906423 4.11190697 6.50622284 4.11190697 6.50622284
0. 9.4675272 4.7337636 8.19911907 4.7337636 8.19911907]
[ 7.41906423 2.04846297 6.50622284 4.11190697 6.50622284 4.11190697
9.4675272 0. 8.19911907 4.7337636 8.19911907 4.7337636 ]
[ 4.11190697 6.50622284 2.04846297 4.11190697 6.50622284 7.41906423
4.7337636 8.19911907 0. 4.7337636 8.19911907 9.4675272 ]
[ 6.50622284 4.11190697 4.11190697 2.04846297 7.41906423 6.50622284
8.19911907 4.7337636 4.7337636 0. 9.4675272 8.19911907]
[ 4.11190697 6.50622284 6.50622284 7.41906423 2.04846297 4.11190697
4.7337636 8.19911907 8.19911907 9.4675272 0. 4.7337636 ]
[ 6.50622284 4.11190697 7.41906423 6.50622284 4.11190697 2.04846297
8.19911907 4.7337636 9.4675272 8.19911907 4.7337636 0. ]]
我正在尝试使用 numpy 来搜索一些值,例如 2.7
和 2.3
之间的值,同时我也会喜欢在数组的行中找到索引时返回索引。我读了很多书,并且找到了例如 .argmin()
,它部分完成了我想要的(但它只向您显示零或小于零的值所在的位置,并且只有一个并发)。在 .argmin 的文档中我找不到任何关于如何找到与零不同的最小值的相关信息,并且在第一次并发后它不会停止。我需要在间隔内为这些值执行此操作。为了更好地解释我自己,这是我期望得到的:
例如:
[row (0), index (2), index (4)]
[row (1), index (3), index (5)]
[row (2), index (0), index (3)]
执行此操作的最佳方法是什么?与此同时,我会继续尝试,如果找到解决方案,我会在此处发布。
谢谢。
最佳答案
您要查找的是 np.argwhere
函数,它会按索引告诉您数组中的条件在何处得到满足。
v = np.array([[ 0. , 5.37060126, 2.68530063 , 4.65107712 , 2.5 ],
[ 5.37060126 , 4.65107712 , 2.68530063 ,.11190697,1 ]])
np.argwhere((v > 2.3) & (v < 2.7))
array([[0, 2],
[0, 4],
[1, 2]])
关于python - 使用 numpy 在数组中查找 N 个并发的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20071729/