【发布时间】:2021-04-23 22:18:42
【问题描述】:
有没有一种方法可以像在普通列表函数中那样索引 numpy 列表。我想遍历列表中的 3 个元素,每次向上移动一个点并对所有切片求和。所以它会通过1,2,3 进行第一个总和,然后它将通过2,3,4 进行第二个总和等等。下面的代码给了我一个标量错误,有没有一种方法可以在不使用的情况下执行下面的函数for 循环。
import numpy as np
n = 3
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8,9, 10, 11,12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ,22, 23, 24, 25])
start = np.arange(0, len(arr)-n, 1)
stop = np.arange(n-1, len(arr), 1)
sum_arr = np.sum(arr[start:stop])
【问题讨论】:
-
[n:m]需要标量值,而不是数组。当在数组和列表中使用时,这是正确的。为什么不使用列表推导式? -
@hpaulj 我不想在 for 循环中使用列表理解,因为它很慢。如果可能的话,我只想使用数组。
-
一开始最好使用一些缓慢但有效的东西,而不是尝试一些“我希望它有效”的猜测!但是
moving-windows-as_strided、convolving、cumsum等有很多替代方案。
标签: python numpy sum slice numpy-ndarray