我有一个数组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阵列.
有没有办法以更简单的方式做我想做的事情?
我试图计算每行显示的数字np.array,例如:
import numpy as np
my_array = np.array([[1, 2, 0, 1, 1, 1],
[1, 2, 0, 1, 1, 1], # duplicate of row 0
[9, 7, 5, 3, 2, 1],
[1, 1, 1, 0, 0, 0],
[1, 2, 0, 1, 1, 1], # duplicate of row 0
[1, 1, 1, 1, 1, 0]])
Run Code Online (Sandbox Code Playgroud)
行[1, 2, 0, 1, 1, 1]显示3次.
一个简单的天真解决方案将涉及将我的所有行转换为元组,并应用collections.Counter,如下所示:
from collections import Counter
def row_counter(my_array):
list_of_tups = [tuple(ele) for ele in my_array]
return …Run Code Online (Sandbox Code Playgroud)