我有一个列表 A 的50,000个元素,每个元素都是一个形状数组(102400)
我尝试了实例化数组 B 。
B=numpy.array(A)
但是这引发了一个异常MemoryError。我知道内存和大小非常大吗?但有没有办法在numpy中使用ndarrays来避免这个MemoryError?
答案 0 :(得分:0)
假设它们是int64(默认的numpy类型)。每个占用8个字节,然后: 维度占每个占用的字节数:
50000 * 102400 * 8 = 40960000000
以千兆字节为单位
50000 * 102400 * 8 / 1024**3 = 38.14697265625 Gb
答案 1 :(得分:0)
作为一种解决方法,您可以避免使用以下内容复制数组:
B = np.empty(len(A), dtype=object)
for i, a in enumerate(A):
B[i] = a
这将允许创建一个dtype object
的ndarray,其元素将是A
的原始元素。然后,您可以对其执行一些数组操作。
但我不确定你是否会以这种方式获胜。