小编csc*_*nle的帖子

对二维数组的每一行的不同切片执行求和

我有一个二维数字数组,想对每一行中的不同索引求平均值。说我有

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但我认为这仅适用于函数?

python numpy

5
推荐指数
1
解决办法
104
查看次数

标签 统计

numpy ×1

python ×1