【发布时间】:2017-09-19 16:25:14
【问题描述】:
我有两个二维矩阵,我想将这两个矩阵相乘得到一个新矩阵。第一个矩阵 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?
非常感谢您的帮助!
【问题讨论】:
-
如果您尝试将矩阵减少到重现问题的最小可能版本,这可能会有所帮助(那么您很可能也找到了解决方案......)。没有打印出来的部分有
nans吗? -
@hiroprotagonist 不幸的是,这些是简化的矩阵。我想我找到了一些
nans。那么在我将所有nan转换为0后它会起作用吗? -
我不能保证这会给出正确/期望的结果,但是
nans 应该会消失。并且减少我的意思是:尝试找到重现您的问题的最小矩阵(它们不需要有任何意义)(即导致点积下的nans)。
标签: python arrays numpy matrix vector