给定两个向量,得到一个布尔值矩阵,指示向量的元素在哪里相等

时间:2016-11-27 21:29:31

标签: numpy matrix vector

我有两个向量:A长度为mB长度为n。 我希望获得一个mn矩阵,其元素(x,y)等于A[x] == B[y]

在numpy中构建这个矩阵的最快方法是什么?

1 个答案:

答案 0 :(得分:2)

使用A2D扩展为1D2D,然后与A[:,None] == B 数组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) for (i in 1:1000){ for (j in 1:1000){ assign(paste0("XY",i,j ,sep='_'), matrix(ncol=10, nrow=4)) } } 的替代方法是重新整形,使第二个轴为for (r in 1:4){ for (i in 1000){ for (j in 1:1000){ assign(paste0("XY",i,j ,sep='_')[r,], function(i,j,r)) } } } 。因此,另一种解决方案是 -

'incorrect number of dimensions'

示例运行 -

get()