Python 大numpy阵列时间/内存问题
我的主管使用IDL,但我一直在使用Python,因为我更熟悉它。我正在执行插值,并保存了下限/上限值。有没有更快的方法 变量 投入:Python 大numpy阵列时间/内存问题,python,numpy,memory,multidimensional-array,Python,Numpy,Memory,Multidimensional Array,我的主管使用IDL,但我一直在使用Python,因为我更熟悉它。我正在执行插值,并保存了下限/上限值。有没有更快的方法 变量 投入: sed=numpy阵列[62216900] it0,it1,iz0,iz1=numpy数组[341499] 快照(其中38个) 产出: sed1、sed2、sed3、sed4=numpy数组[341499] MWE 我想循环38个快照,然后在该循环中循环341499个粒子,然后指定生成的numpy数组[6900],如下所示 sed1=sed[iz0,it0
- sed=numpy阵列[62216900]
- it0,it1,iz0,iz1=numpy数组[341499]
- 快照(其中38个)
- sed1、sed2、sed3、sed4=numpy数组[341499]
sed1=sed[iz0,it0]
sed2=sed[iz1,it0]
sed3=sed[iz0,it1]
sed4=sed[iz1,it1]
我试过的
- 我无法初始化所需大小的数组,即numpy[38341499,46900],因为这会导致内存错误。无法使用向量[:]操作分配含义
- 我尝试过初始化一个大小为[38341499]的numpy dtype对象数组,但速度非常慢
np.int8
,它仍然需要38*341499*4*690==358164151200
字节,也就是358G的内存。你可以尝试在保存到磁盘的二进制文件上使用numpy.memmap
。不过,它需要大量内存。对于np.float32
而言,超过1 TB,对于np.float64
而言,使用对象数据类型时,会丢失大部分快速数组操作。随着Python速度的加快,它必须遍历元素(对象)。还有什么其他的“分块”计算方法吗?天才问题。