numpy.square
似乎给了不正确的输出时scipy.sparse
矩阵传递给它:numpy.square返回稀疏矩阵不正确的结果
import numpy as np
import scipy.sparse as S
a = np.array([np.arange(5), np.arange(5), np.arange(5), np.arange(5), np.arange(5)])
a
# array([[0, 1, 2, 3, 4],
# [0, 1, 2, 3, 4],
# [0, 1, 2, 3, 4],
# [0, 1, 2, 3, 4],
# [0, 1, 2, 3, 4]])
np.square(a)
# array([[ 0, 1, 4, 9, 16],
# [ 0, 1, 4, 9, 16],
# [ 0, 1, 4, 9, 16],
# [ 0, 1, 4, 9, 16],
# [ 0, 1, 4, 9, 16]])
b = S.lil_matrix(a)
c = np.square(b)
c
# <5x5 sparse matrix of type '<class 'numpy.int64'>'
# with 20 stored elements in Compressed Sparse Row format>
c[2,2]
# 20
# Expected output is 4, as in np.square(a) output above.
这是一个错误?
'np.square'文档说它可以通过多元素元素来完成。它为'np.matrix'对象做了这个。出于某些模糊的原因,用“稀疏”矩阵对象进行矩阵乘法。我认为调用堆栈是C和Python代码的混合体,很难遵循。 – hpaulj