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

时间:2016-09-18 10:59:33

标签: python numpy matrix scipy sparse-matrix

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

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

如果我不导入scipy.sparse包,a数组类型矩阵b也可以执行。 如果我使用'from scipy.sparse import *',a稀疏类型矩阵,则b 无法被激活。 有人可以告诉我为什么kron会给出不同的结果吗? 并且,flatten()是否可以应用于稀疏类型矩阵?

1 个答案:

答案 0 :(得分:2)

from module import *通常被认为是应用程序代码中的错误形式,因为您正在查看 - 这使得很难分辨哪些模块函数来自哪个,特别是如果您执行此操作不止一个模块

现在,你有:

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

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

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

然后您可以将np换成要使用稀疏版本的sparse,并且读者会立即知道您正在使用哪一个。如果您尝试使用稀疏版本而实际上没有错误,那么您将收到错误。