我有两个向量:长度为 m
的 A
和长度为 n
的 B
。
我想通过 n
得到一个 m
矩阵,其元素 (x,y)
等于 A[x] == B[y]
.
在 numpy 中构建这个矩阵的最快方法是什么?
最佳答案
使用NumPy's broadcasting feature
通过使用 None/np.newaxis
将 A
扩展为 2D
版本然后与 1D
数组 B 进行比较,得到所需的 2D
bool 数组 -
A[:,None] == B
创建 A
的 2D
版本的替代方法是 reshape ,使第二个轴的长度为 length = 1
。因此,另一种解决方案是 -
A.reshape(-1,1) == B
sample 运行-
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)
关于numpy - 给定两个向量,得到一个 bool 值矩阵,指示向量元素在何处相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40834127/