设A为矩阵:
A = array([[0. , 0. , 0. , ..., 0. , 0. ,
0. ],
[0. , 0.28867513, 0.28867513, ..., 0. , 0. ,
0. ],
[0. , 0. , 0. , ..., 0. , 0. ,
0. ],
[0. , 0. , 0. , ..., 0. , 0. ,
0. ],
[0. , 0.13363062, 0.13363062, ..., 0. , 0. ,
0. ]])
B = array([0.70710678, 0.66666667, 0.5 , 0.75 , 1. ])
我需要找到B在A中的索引。
预期输出:
Matrix containing position of elements.
我想使用内置的numpy命令/逻辑来执行这个操作,而不是使用列表理解或for循环。
更新:已尝试使用isin,无法处理同一行中具有相同值的多个元素。
更新了一个更好的问题示例。
2条答案
按热度按时间shyt4zoc1#
numpy.all
有一个axis
输入,因此您可以检查行/列是否全部为True。cczfrluj2#
用你原来的例子
一个简单的列表解析产生:
index
只给出第一个值,如果不匹配就会产生一个错误。我们可以写一个cover函数来解决这个问题,捕捉错误,然后重复它自己。如果输入为数组:
我们可以做一个"行式"测试:
并找出所有的真值。你的[2,1,3]是第二个数组。
匹配也不是那么干净,每行的匹配数是可变的。
如果值是浮点数,我们可以使用
isclose
:Get all indexes of multiple values in numpy array
在两个数组之间寻找多个匹配项。两个数组都是一维的,但是响应说明了处理多个匹配项的复杂性。