我正在使用以下代码:
n = 40000
numpy.matlib.identity(n)
答案 0 :(得分:6)
您可以使用sparse matrix representation
来使用scipy执行此操作import numpy as np
from scipy.sparse import identity
n = 30000
a = np.identity(n)
print a.nbytes
b = identity(n)
print b.data.nbytes
差异很大(二次方):7200000000
vs 240000
。
您还可以尝试通过提供适当的dtype来缩小尺寸,例如a = np.identity(n, dtype='int8')
,但这只会线性缩小尺寸(最大线性系数小于200)。
与b = identity(n, dtype='int8', format='dia')
相同的方法可以将尺寸进一步缩小到30000
。
但是最重要的是你打算用这个矩阵做什么(非常怀疑你只想创建它)?有些操作不支持稀疏索引。然后你要么购买更多的内存,要么提出智能线性代数的东西来操作部分矩阵,将结果存储在磁盘上并将它们合并在一起。