我正在寻找一种方法,一次从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维数组中
我想也许我可以复制我的数据,然后从每一行中选择一个跨度,但下面的代码会抛出一个索引器
replicated_data = np.vstack([data] * 3)
data_extractions = replicated_data[[range(3)], [slice(0, 5), slice(1, 6), slice(2, 7)]
在这篇文章中,是一种使用
strided-indexing scheme
的方法,它基本上是在输入数组中创建一个视图,因此创建视图非常有效,并且作为一个视图不会占用更多的内存空间。 此外,这也适用于具有通用维数的nArray以下是实施方案-
4D
数组案例的运行示例-您可以使用索引选择要放入适当形状的行。 例如:
最后的对比是与原始数据的对比
stride_tricks
可以做到这一点请注意
b
引用与a
相同的内存,事实上多次引用(例如b[0, 1]
和b[1, 0]
是相同的内存地址)。因此,在使用新结构之前制作副本是最安全的nd可以以类似的方式进行,例如2d->;4d
相关问题 更多 >
编程相关推荐