我面临的情况是需要处理一个非常大的
因此,我只能通过迭代一些数组维度来处理完整数组的子集,以便可以对完整数组的缩小子集执行数组操作。为了做到这一点,我需要能够动态地切片出一个子集。动态切片意味着构造一个元组并传递它。
例如,不是:
然而,如果我使用元组,则无法实现此目标:
numpy.ndarray
(实际上它是一个 hdf5 数据集),由于整个数组无法存储在内存中,因此需要快速找到子集。然而,我也不想遍历这样一个数组(即使声明内置的 numpy 迭代器也会抛出 MemoryError
),因为我的脚本需要运行数天。因此,我只能通过迭代一些数组维度来处理完整数组的子集,以便可以对完整数组的缩小子集执行数组操作。为了做到这一点,我需要能够动态地切片出一个子集。动态切片意味着构造一个元组并传递它。
例如,不是:
my_array[0,0,0]
我可能会使用
my_array[(0,0,0,)]
问题在于,如果我想手动切片数组中沿着特定维度/轴的所有值,我可以像这样做:
my_array[0,:,0]
> array([1, 4, 7])
然而,如果我使用元组,则无法实现此目标:
my_array[(0,:,0,)]
我需要找到一个 SyntaxError
错误的位置。
当我必须动态构建切片以将某个内容放入数组的括号中时,我该怎么做?
slice(None)
的用法。那正是我所需要的。 - roninveracity