Python 获取第一个数组的行与第二个数组的行匹配
假设我有一个Python 获取第一个数组的行与第二个数组的行匹配,python,numpy,vectorization,Python,Numpy,Vectorization,假设我有一个A形状(M,K)的数组和另一个B形状(N,K) B行是所有可能遇到的模式(因此每个模式都是大小为K的1D数组) 因此,我想得到一个形状为(M,)的数组C,其中C[I]是A行I的模式(在B中)的标识 我目前正在循环(即循环所有可能的模式)中执行此操作,但最终将使用矢量化 以下是一个例子: A = np.array([[0, 1], [0, 1], [1, 0]]) B = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) 我期待着: C = np.
A
形状(M,K)
的数组和另一个B
形状(N,K)
B
行是所有可能遇到的模式(因此每个模式都是大小为K
的1D数组)
因此,我想得到一个形状为(M,)
的数组C
,其中C[I]
是A
行I
的模式(在B
中)的标识
我目前正在循环(即循环所有可能的模式)中执行此操作,但最终将使用矢量化
以下是一个例子:
A = np.array([[0, 1], [0, 1], [1, 0]])
B = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
我期待着:
C = np.array([1, 1, 2])
基于,这里有一个矢量化的解决方案,使用-
样本运行-
In [43]: A
Out[43]:
array([[72, 89, 75],
[72, 89, 75],
[93, 38, 61],
[47, 67, 50],
[47, 67, 50],
[93, 38, 61],
[72, 89, 75]])
In [44]: B
Out[44]:
array([[47, 67, 50],
[93, 38, 61],
[41, 55, 27],
[72, 89, 75]])
In [45]: out
Out[45]: array([3, 3, 1, 0, 0, 1, 3])
In [43]: A
Out[43]:
array([[72, 89, 75],
[72, 89, 75],
[93, 38, 61],
[47, 67, 50],
[47, 67, 50],
[93, 38, 61],
[72, 89, 75]])
In [44]: B
Out[44]:
array([[47, 67, 50],
[93, 38, 61],
[41, 55, 27],
[72, 89, 75]])
In [45]: out
Out[45]: array([3, 3, 1, 0, 0, 1, 3])