我有 2 个矩阵和一个向量,我使用dot()
numpy 的函数将它们相乘。
print D.shape, A.shape, y.shape, type(D), type(A), type(y)
# (236, 236) (236, 236) (236,)
# <class 'scipy.sparse.csr.csr_matrix'>
# <class 'scipy.sparse.csr.csr_matrix'>
# <type 'numpy.ndarray'>
y_next = np.dot(D, np.dot(A, y))
print y_next.shape
# (236,)
因此,如果 is 的形状y_next
意味着(236,)
它是 236x1 矩阵,对吗?现在,如果我这样做,print y_next
我会得到下面的输出。我刚刚复制了最后一行行,但您可以看到,第一个索引(行)不是唯一的。这是从哪里来的?我的意思是一个矩阵乘以一个向量应该得到一个向量,并且根据定义,一个向量不能有两次相同的索引。如果它有,如输出所示,它将是一个矩阵。
我的错误在哪里?
输出:
::
(230, 212) 0.04
(230, 205) 0.04
(230, 187) 0.04
(230, 11) 0.04
(231, 230) 0.04
(231, 212) 0.04
(231, 205) 0.04
(231, 187) 0.04
(231, 11) 0.04
(232, 235) 0.0625
(232, 234) 0.0625
(232, 233) 0.0625
(232, 160) 0.0625
(233, 235) 0.0625
(233, 234) 0.0625
(233, 232) 0.0625
(233, 160) 0.0625
(234, 235) 0.0625
(234, 233) 0.0625
(234, 232) 0.0625
(234, 160) 0.0625
(235, 234) 0.0625
(235, 233) 0.0625
(235, 232) 0.0625
(235, 160) 0.0625
(0, 79) 0.0555555555556
(0, 3) 0.0555555555556
(0, 2) 0.0555555555556
(0, 1) 0.0833333333333
(1, 80) 0.0555555555556
(1, 3) 0.0555555555556
(1, 2) 0.0555555555556
(1, 0) 0.0833333333333
(2, 81) 0.00966183574879
(2, 8) 0.00966183574879
(2, 7) 0.00966183574879
(2, 6) 0.00966183574879
(2, 5) 0.00966183574879
(2, 4) 0.00966183574879
(2, 3) 0.0338164251208
(2, 1) 0.00966183574879
(2, 0) 0.00966183574879
(3, 82) 0.00966183574879
(3, 8) 0.00966183574879
(3, 7) 0.00966183574879
(3, 6) 0.00966183574879
(3, 5) 0.00966183574879
(3, 4) 0.00966183574879
(3, 2) 0.0338164251208
(3, 1) 0.00966183574879
: :
(230, 212) 0.04
(230, 205) 0.04
(230, 187) 0.04
(230, 11) 0.04
(231, 230) 0.04
(231, 212) 0.04
(231, 205) 0.04
(231, 187) 0.04
(231, 11) 0.04
(232, 235) 0.0625
(232, 234) 0.0625
(232, 233) 0.0625
(232, 160) 0.0625
(233, 235) 0.0625
(233, 234) 0.0625
(233, 232) 0.0625
(233, 160) 0.0625
(234, 235) 0.0625
(234, 233) 0.0625
(234, 232) 0.0625
(234, 160) 0.0625
(235, 234) 0.0625
(235, 233) 0.0625
(235, 232) 0.0625
(235, 160) 0.0625]