Python 大numpy阵列时间/内存问题

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

我的主管使用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]
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速度的加快,它必须遍历元素(对象)。还有什么其他的“分块”计算方法吗?天才问题。