【发布时间】:2020-01-12 04:17:02
【问题描述】:
我想实现一个函数,该函数可以计算大型数组(无法完全放入 RAM)上的基本数学运算。因此,我想创建一个函数,该函数将在选定的轴上逐块处理给定的操作。这个函数的主要思路是这样的:
def process_operation(inputs, output, operation):
shape = inputs[0].shape
for index in range(shape[axis]):
output[index,:] = inputs[0][index:] + inputs[1][index:]
但我希望能够通过对块进行切片/索引来更改轴。
是否可以以某种动态方式进行索引,而不是使用 ':' 语法糖?
我找到了一些帮助here,但到目前为止帮助不大:
谢谢
【问题讨论】:
-
您查看过
numpy.memmap的磁盘上/内存外阵列吗? -
是的,但经过一番谷歌搜索后,我发现 h5py link 更有用。但是当我对它们执行像 np.add() 这样的基本数学运算时,它会将整个“数据集”加载到内存中。当我尝试将另一个数据集作为输出参数传递时-> 我得到 TypeError,我没有传递 Arraylike 对象。我有一堆数组,我需要处理一些基本数学运算和一些卷积 -> 并在计算块之间传递结果(执行运算)
-
@NilsWerner 到目前为止我会坚持使用 numpy.memmap 的建议。谢谢