异常
我有两个二维矩阵,并且我想将这两个矩阵相乘以获得一个新的矩阵。第一个矩阵A的尺寸为943 x 1682,如下所示:
[[ 5. 3. 4. ..., 0. 0. 0.]
[ 4. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
...,
[ 5. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 5. 0. ..., 0. 0. 0.]]
另一个矩阵B的尺寸为1682 x 20,如下所示:
[[ 0. 0. 0. ..., 0. 0. 3. ]
[ 0. 0.57735027 0.57735027 ..., 0. 0. 3. ]
[ 0. 0. 0. ..., 0. 0. 1. ]
...,
[ 0. 0. 0. ..., 0. 0. 2. ]
[ 0. 0. 0. ..., 0. 0. 1. ]
[ 0. 0. 0. ..., 0. 0. 1. ]]
但是,当我尝试A.dot(B)或np.matmul(A,B)时,我得到了一个新的矩阵,其值均为nan,如下所示:
[[ nan nan nan ..., nan nan nan]
[ nan nan nan ..., nan nan nan]
[ nan nan nan ..., nan nan nan]
...,
[ nan nan nan ..., nan nan nan]
[ nan nan nan ..., nan nan nan]
[ nan nan nan ..., nan nan nan]]
我认为这可能是乘以0的结果。但是为什么它会在每个位置返回nan?我应该如何处理,以便我可以得到数字而不是nan?
非常感谢您的帮助!
最佳答案
第一个矩阵中的单个nan列和/或第二个矩阵中的单个nan行,可能会导致此问题。验证所有值在两个矩阵中均有效的一种方法是过滤nan并查看形状是否保持不变:
a_shape_before = A.shape
a_shape_after = A[numpy.logical_not(numpy.is_nan(A))].shape
assert a_shape_before == a_shape_after
对于B同样如此。
补充
关于python - numpy矩阵乘法返回nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43563511/

















