假设我们有两个矩阵a = [[1,2] [3,4]],b = [[5,6] [7,8]](在我的例子中它们非常大)。使用numpy.dot(a,b),我们可以得到res = [[19,22],[43,50]]的结果。如果在结果中,我们只需要部分元素,即[[19,NA],[NA,50]],我们不关心22或43.我怎么能实现这样的numpy dot产品知道哪个我想要的结果矩阵的一部分(在我的例子中它是mask = [[1,0] [0,1]])?
实际结果掩码是随机csr_matrix。
通常,我们有两个大矩阵A(大小:M x N)和B(大小:N x P)。在numpy.dot()结果中,我们只关心掩码M中的1个元素(大小:M x P)。因此,我们希望通过跳过掩码中的那些元素来提高性能。
答案 0 :(得分:0)
使用numpy masked arrays,然后使用通常的numpy dot产品:
import numpy.ma as ma
a = ma.array([[1, 2],[3, 4]], mask=[[0,1],[1,0]])
b = ma.array([[5, 6],[7, 8]], mask=[[0,1],[1,0]])
np.dot(a,b)
masked_array(data =
[[19 --]
[-- 50]],
mask =
[[False True]
[ True False]],
fill_value = 999999)