1
我有兩個向量:長度爲m
的A
和長度爲n
的B
。 我想要得到一個m
由n
矩陣的元素(x,y)
等於A[x] == B[y]
。給定兩個向量,得到一個布爾值矩陣,表示向量元素的位置相等
什麼是構建numpy的這個矩陣的最快方法?
我有兩個向量:長度爲m
的A
和長度爲n
的B
。 我想要得到一個m
由n
矩陣的元素(x,y)
等於A[x] == B[y]
。給定兩個向量,得到一個布爾值矩陣,表示向量元素的位置相等
什麼是構建numpy的這個矩陣的最快方法?
使用NumPy's broadcasting feature
由A
延伸到2D
版本None/np.newaxis
然後比較針對1D
陣列乙所得期望2D
布爾陣列中 -
A[:,None] == B
到創建2D
版本的A
將與另一種重塑成第二軸爲length = 1
。因此,另一種解決方案是 -
A.reshape(-1,1) == B
採樣運行 -
In [89]: A
Out[89]: array([0, 1, 2, 3])
In [90]: B
Out[90]: array([4, 3, 2, 1, 0])
In [91]: A[:,None] == B
Out[91]:
array([[False, False, False, False, True],
[False, False, False, True, False],
[False, False, True, False, False],
[False, True, False, False, False]], dtype=bool)