【发布时间】:2017-09-10 20:01:16
【问题描述】:
我正在寻找一种方法来一次从一个 numpy 数组中选择多个切片。假设我们有一个 1D 数据数组,并且想要提取它的三个部分,如下所示:
data_extractions = []
for start_index in range(0, 3):
data_extractions.append(data[start_index: start_index + 5])
之后data_extractions 将是:
data_extractions = [
data[0:5],
data[1:6],
data[2:7]
]
有没有什么方法可以在没有 for 循环的情况下执行上述操作? numpy 中的某种索引方案可以让我从数组中选择多个切片并将它们作为多个数组返回,比如在 n+1 维数组中?
我想也许我可以复制我的数据,然后从每一行中选择一个跨度,但是下面的代码会抛出一个 IndexError
replicated_data = np.vstack([data] * 3)
data_extractions = replicated_data[[range(3)], [slice(0, 5), slice(1, 6), slice(2, 7)]
【问题讨论】:
-
那里的
n是什么? -
stride_tricks可能是一种方式 -
@Divakar - 维度。为了简单起见,我给出了一个 1D 示例,但需要一个通用解决方案(我真正的问题是 4D)。