我正在寻找一种方法来一次从 numpy 数组中选择多个切片。假设我们有一个一维数据数组,想要提取它的三个部分,如下所示:
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)]
原文由 Puchatek 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用索引来选择您想要的行到适当的形状。例如:
最后的比较是针对原始数据。