小编典典
方法1
一种方法是NumPy broadcasting像这样
np.where((X==searched_values[:,None]).all(-1))[1]
方法#2
一种内存有效的方法是将每一行转换为等效的线性索引,然后使用np.in1d,例如,
dims = X.max(0)+1
out = np.where(np.in1d(np.ravel_multi_index(X.T,dims),\
np.ravel_multi_index(searched_values.T,dims)))[0]
方法3
使用np.searchsorted并具有转换为线性索引等效项的相同原理的另一种内存有效方法将是这样的-
dims = X.max(0)+1
X1D = np.ravel_multi_index(X.T,dims)
searched_valuesID = np.ravel_multi_index(searched_values.T,dims)
sidx = X1D.argsort()
out = sidx[np.searchsorted(X1D,searched_valuesID,sorter=sidx)]
请注意,此np.searchsorted方法假定searched_valuesin 中的每一行都有一个匹配项X。
np.ravel_multi_index工作如何?
此函数为我们提供了线性索引当量数。它接受,设置为列的2D数组n-dimensional indices和该n维网格本身的形状,这些索引将映射到该n维网格上并计算等效的线性索引。
让我