【发布时间】:2016-08-03 06:11:56
【问题描述】:
我面临的情况是,我有一个非常大的 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。
当我必须动态构造切片以将某些内容放入数组的括号中时,我该怎么做?
【问题讨论】:
标签: python numpy multidimensional-array slice