【发布时间】:2014-06-27 15:25:27
【问题描述】:
我想使用列表生成非常大的二维数组(或者,换句话说,一个矩阵)。每个元素都应该是一个浮点数。
所以,举个例子,我们假设有以下代码:
import numpy as np
N = 32000
def largeMat():
m = []
for i in range(N):
l = list(np.ones(N))
m.append(l)
if i % 1000 == 0:
print i
return m
m = largeMat()
我有 12GB 的 RAM,但是当代码到达矩阵的第 10000 行时,我的 RAM 已经满了。现在,如果我没记错的话,每个浮点数都是 64 位大(或 8 字节),所以总占用 RAM 应该是:
32000 * 32000 * 8 / 1 MB = 8192 MB
为什么 python 会填满我的整个 RAM,甚至开始分配到交换区?
【问题讨论】:
标签: python arrays matrix byte ram