对于下面的代码,Mat是一个数组类型矩阵,
a = kron(Mat,ones((8,1)))
b = a.flatten()
如果我不导入scipy.sparse包,a
是数组类型矩阵,b
也可以执行。
如果我使用'from scipy.sparse import *',a
是稀疏类型矩阵,则b
无法被激活。
有人可以告诉我为什么kron
会给出不同的结果吗?
并且,flatten()是否可以应用于稀疏类型矩阵?
答案 0 :(得分:2)
from module import *
通常被认为是应用程序代码中的错误形式,因为您正在查看 - 这使得很难分辨哪些模块函数来自哪个,特别是如果您执行此操作不止一个模块
现在,你有:
from numpy import *
# from scipy.sparse import *
a = kron(Mat,ones((8,1)))
b = a.flatten()
取消注释第二行可能会影响ones
和kron
的来源。但是,除非你查看是否稀疏重新定义了这些,否则你不会知道。最好这样写:
import numpy as np
from scipy import sparse
a = np.kron(Mat, np.ones((8,1)))
b = a.flatten()
然后您可以将np
换成要使用稀疏版本的sparse
,并且读者会立即知道您正在使用哪一个。如果您尝试使用稀疏版本而实际上没有错误,那么您将收到错误。