gpt4 book ai didi

python - 提取比 numpy 数组大小更大的切片

转载 作者:行者123 更新时间:2023-11-28 21:55:45 25 4
gpt4 key购买 nike

我想从 numpy 数组 A 中提取长度为 10 的切片,从索引 2 开始:

import numpy 

A = numpy.array([1,3,5,3,9])

def bigslice(A, begin_at, length):
a = A[begin_at:begin_at + length]
while len(a) + len(A) < length:
a = numpy.concatenate((a,A))
return numpy.concatenate((a, A[:length-len(a)]))

print bigslice(A, begin_at = 2, length = 10)
#[5,3,9,1,3,5,3,9,1,3]

这是正确的。但我正在寻找一种更有效的方法来做到这一点(尤其是当我最后会有数千个元素的数组时):我怀疑这里使用的 concatenate 重新创建了许多新的临时数组,那将是低效的。

如何更高效地做同样的事情?

最佳答案

由于您已经知道数组的中间部分(即整个数组的 n 次重复),您可以使用 np.tile 简单地构造中间部分:

def cyclical_slice(A, start, length):
arr_l = len(A)
middle = np.tile(A, length // arr_l)

return np.array([A[start:], middle, A[0:length - len(middle)]])

关于python - 提取比 numpy 数组大小更大的切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22482583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com