我正在使用Numpy版本1.11.1并且必须处理
的二维数组my_arr.shape = (25000, 25000)
所有值都是整数,我需要一个唯一的数组值列表。当我使用lst = np.unique(my_arr)
时:
Traceback (most recent call last):
File "<pyshell#38>", line 1, in <module>
palette = np.unique(arr)
File "c:\Python27\lib\site-packages\numpy\lib\arraysetops.py", line 176, in unique
ar = np.asanyarray(ar).flatten()
MemoryError
我的机器只有8 GB RAM,但是我尝试使用另一台16 GB RAM的机器,结果是一样的。监视内存和CPU使用情况并不表明问题与RAM或CPU有关。
原则上,我知道数组所包含的值,但是如果输入改变了怎么办...另外,如果我想用另一个替换数组的值(让我们说全部2乘0),它还需要大量的RAM吗?
答案 0 :(得分:0)
Python 32位无法访问4个以上的GiB RAM(通常为~2.5 GiB)。显而易见的答案是使用64位版本。如果这不起作用,另一种解决方案是使用numpy.memmap
并将数组内存映射到存储在磁盘上的文件中。