Python:当我使用“from scipy.sparse import *”时,'kron' 会创建稀疏矩阵吗?

Python: Does 'kron' create sparse matrix when I use ' from scipy.sparse import * '?

对于下面的代码,Mat是数组类型的矩阵,

a = kron(Mat,ones((8,1)))
b = a.flatten()

如果我不导入scipy.sparse包,a是一个数组类型的矩阵b也可以执行。 如果我用'from scipy.sparse import *',a是一个稀疏型矩阵b不能执行。 谁能告诉我为什么 kron 会给出不同的结果? 还有,flatten()是否可以应用于稀疏型矩阵?

from module import * 通常被认为是应用程序代码中的错误形式,因为您所看到的原因 - 它使得很难判断哪些模块功能来自,特别是如果您对多个模块执行此操作模块

现在,您有:

from numpy import *
# from scipy.sparse import *
a = kron(Mat,ones((8,1)))
b = a.flatten()

取消注释第二行可能会影响 oneskron 的来源。但是除非你查一下 sparse 是否重新定义了这些,否则你不会知道。最好这样写:

import numpy as np
from scipy import sparse
a = np.kron(Mat, np.ones((8,1)))
b = a.flatten()

然后您可以将 np 换成 sparse 以使用稀疏版本,reader 会立即知道您使用的是哪一个。如果您尝试使用稀疏版本,而实际上并没有稀疏版本,则会出现错误。