我有一个数组X:
X = np.array([[4, 2],
[9, 3],
[8, 5],
[3, 3],
[5, 6]])
Run Code Online (Sandbox Code Playgroud)
我希望在这个数组中找到几个值的行的索引:
searched_values = np.array([[4, 2],
[3, 3],
[5, 6]])
Run Code Online (Sandbox Code Playgroud)
对于这个例子,我想要一个结果,如:
[0,3,4]
Run Code Online (Sandbox Code Playgroud)
我有一个代码这样做,但我认为它过于复杂:
X = np.array([[4, 2],
[9, 3],
[8, 5],
[3, 3],
[5, 6]])
searched_values = np.array([[4, 2],
[3, 3],
[5, 6]])
result = []
for s in searched_values:
idx = np.argwhere([np.all((X-s)==0, axis=1)])[0][1]
result.append(idx)
print(result)
Run Code Online (Sandbox Code Playgroud)
我找到了类似问题的答案,但它仅适用于1d阵列.
有没有办法以更简单的方式做我想做的事情?
在以下问题中, /sf/answers/2803929481/
Numpy的广播提供的解决方案比使用与np.view()配对的np.setdiff1d()快6倍.它是如何设法做到这一点的?
并且使用A[~((A[:,None,:] == B).all(-1)).any(1)]速度更快.有趣,但提出了另一个问题.这表现得更好?