是否为numpy数组定义了最大大小?
如果我试图执行:是否为numpy数组定义了最大大小?,numpy,Numpy,如果我试图执行: np.empty(shape= (108698,200,1000)) 在我的jupyter笔记本中,它抛出了一个错误 MemoryError Traceback (most recent call last) <ipython-input-35-0aedb09803e9> in <module>() 1 import numpy as np 2 #np.empty(sh
np.empty(shape= (108698,200,1000))
在我的jupyter笔记本中,它抛出了一个错误
MemoryError Traceback (most recent call last)
<ipython-input-35-0aedb09803e9> in <module>()
1 import numpy as np
2 #np.empty(shape=(108698-0,200,1000))
----> 3 np.empty(shape= (108698,200,1000))
4 #np.empty(shape=(end-start,n_words,embedding_size))
它执行时没有任何错误
那么,有什么方法可以运行呢
np.empty(shape= (108698,200,1000))
不增加我的机器的RAM吗?不。虽然这取决于你正在运行什么,但如果你已经达到了最大分配内存,你就不能创建更多。例如,如果您运行的是64位numpy,每个条目8个字节,那么总共将是174GB,这将占用太多的空间。如果您知道数据条目,并且愿意使用numpy之外的内容,那么您可以研究稀疏数组。稀疏数组仅存储可能节省空间的非零元素及其位置索引。否。虽然这取决于您运行的内容,但如果您已达到最大分配内存,则无法创建更多。例如,如果您运行的是64位numpy,每个条目8个字节,那么总共将是174GB,这将占用太多的空间。如果您知道数据条目,并且愿意使用numpy之外的内容,那么您可以研究稀疏数组。稀疏数组仅存储可能节省空间的非零元素及其位置索引。没有为
形状定义上限,但数组的整体大小限制为numpy.intp
,通常为int32
或int64
您可以使用SciPi中的稀疏矩阵,也可以将大型(1086982001000)
数组的dtype
限制为int8
,这样应该可以工作。没有为形状定义上限,但数组的整个大小限制为numpy.intp
,通常是int32
或int64
您可以使用SciPi中的稀疏矩阵,也可以将大型(1086982001000)
数组的dtype
限制为int8
,这样应该可以工作。您可以使用内存映射文件来处理不适合内存的数组。Numpy具有用于此的设施:
例如:
但是,在32位Python上,文件仍然限制为2GB。您可以使用内存映射文件处理不适合内存的数组。Numpy具有用于此的设施:
例如:
但是,在32位Python上,文件仍然限制在2GB。没有上限。我们可以(粗略地)估计ndarray的内存量:
>>> arr = np.empty(shape= (100,10,1000),dtype='unit8')
>>> hr_size(arr.nbytes)
'1M'
对于包含100万个元素的ndarray(“uint8”的每个元素都需要一个字节),我们需要“976.6K”的内存
对于具有shape=(843232001000)和dtype='uint8'的ndarray
>>> hr_size(84323*200*1000)
'15.7G'
>>> hr_size(108698*200*1000)
'20.2G'
我们需要超过15克
最后,对于具有shape=(1086982001000)和dtype='uint8'的ndarray
>>> hr_size(84323*200*1000)
'15.7G'
>>> hr_size(108698*200*1000)
'20.2G'
我们需要超过20克
如果数据类型为“int64”,则估计的内存量应增加八倍 嗯,没有上限。我们可以(粗略地)估计ndarray的内存量:
>>> arr = np.empty(shape= (100,10,1000),dtype='unit8')
>>> hr_size(arr.nbytes)
'1M'
对于包含100万个元素的ndarray(“uint8”的每个元素都需要一个字节),我们需要“976.6K”的内存
对于具有shape=(843232001000)和dtype='uint8'的ndarray
>>> hr_size(84323*200*1000)
'15.7G'
>>> hr_size(108698*200*1000)
'20.2G'
我们需要超过15克
最后,对于具有shape=(1086982001000)和dtype='uint8'的ndarray
>>> hr_size(84323*200*1000)
'15.7G'
>>> hr_size(108698*200*1000)
'20.2G'
我们需要超过20克
如果数据类型为“int64”,则估计的内存量应增加八倍