我有两个向量:A
长度为m
,B
长度为n
。
我希望获得一个m
个n
矩阵,其元素(x,y)
等于A[x] == B[y]
。
在numpy中构建这个矩阵的最快方法是什么?
答案 0 :(得分:2)
使用A
将2D
扩展为1D
版2D
,然后与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()