首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到numpy数组的每两行的平均值

如何找到numpy数组的每两行的平均值
EN

Stack Overflow用户
提问于 2020-11-18 15:05:06
回答 4查看 704关注 0票数 1

我有一个大的numpy数组,希望取每两行的第二列的平均值,并将数组保存为新的列。我想取每两行的平均数,即第1行和第2行第二列的平均数,然后取第3和第4行第二列的平均数,以此类推。然后,我想将每两行合并为一个行。这一对行的第一列和第三列也是相同的。这是我简化的数组:

代码语言:javascript
复制
input= np.array ([[1., 2., 5.],
                  [1., 4., 5.],
                  [4., 10., 3.],
                  [4., 2., 3.],
                  [1., 0., 0.],
                  [1., 1., 0.]])

然后,我想要:

代码语言:javascript
复制
output= np.array ([[1., 3., 5.],
                   [4., 6., 3.],
                   [1., 0.5, 0.]])

我尝试了以下几种方法,但都没有成功:

代码语言:javascript
复制
output=np.array([])
for i in range (len(input)-1):
    g=(input[i,1]+input[i+1,1])/2
    output=np.append(g,output)

在此之前,我非常感谢你的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-11-18 15:17:51

对于两行,我发现这样做更容易:

代码语言:javascript
复制
(arr[::2] + arr[1::2])/2
票数 2
EN

Stack Overflow用户

发布于 2020-11-18 15:15:02

对于reshape,使用输入形状的一个更健壮的方法

代码语言:javascript
复制
i= np.array ([[1., 2., 5.],
              [1., 4., 5.],
              [4., 10., 3.],
              [4., 2., 3.],
              [1., 0., 0.],
              [1., 1., 0.]])

i.reshape(-1, 2, i.shape[-1]).mean(1)

array([[1. , 3. , 5. ],
       [4. , 6. , 3. ],
       [1. , 0.5, 0. ]])
票数 2
EN

Stack Overflow用户

发布于 2020-11-18 15:12:38

您可以重新塑造并找到平均值,如下所示:

代码语言:javascript
复制
import numpy as np

ipt = np.array([[1., 2., 5.],
                [1., 4., 5.],
                [4., 10., 3.],
                [4., 2., 3.],
                [1., 0., 0.],
                [1., 1., 0.]])
result = np.mean(ipt.reshape((3, 2, 3)), axis=1)
print(result)

输出

代码语言:javascript
复制
[[1.  3.  5. ]
 [4.  6.  3. ]
 [1.  0.5 0. ]]

另外,避免使用输入作为变量名,因为它隐藏了内置的输入。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64895761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档