我有一个二维数字数组,想对每一行中的不同索引求平均值。说我有
import numpy as np
data = np.arange(16).reshape(4, 4)
Run Code Online (Sandbox Code Playgroud)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
Run Code Online (Sandbox Code Playgroud)
我有两个列表,为每一行指定第一个(包含)和最后一个(不包含)索引:
start = [1, 0, 1, 2]
end = [2, 1, 3, 4]
Run Code Online (Sandbox Code Playgroud)
然后我想实现这一点:
result = []
for i in range(4):
result.append(np.sum(data[i, start[i]:end[i]]))
Run Code Online (Sandbox Code Playgroud)
这使
[1, 4, 19, 29]
Run Code Online (Sandbox Code Playgroud)
但是,我使用的数组比这个例子中的要大很多,所以这个方法对我来说太慢了。有什么聪明的方法可以避免这个循环吗?
我的第一个想法是展平阵列。然后,我想,人们需要以某种方式制作一个切片列表并将其并行应用于数组,我不知道该怎么做。
否则,我正在考虑使用np.apply_along_axis但我认为这仅适用于函数?