gpt4 book ai didi

python - 计算不同长度数组的平均值

转载 作者:太空狗 更新时间:2023-10-29 21:35:18 26 4
gpt4 key购买 nike

当多个数组的长度可能不同时,是否可以计算它们的平均值?我正在使用 NumPy 。假设我有:

numpy.array([[1, 2, 3, 4, 8],    [3, 4, 5, 6, 0]])
numpy.array([[5, 6, 7, 8, 7, 8], [7, 8, 9, 10, 11, 12]])
numpy.array([[1, 2, 3, 4], [5, 6, 7, 8]])

现在我想计算均值,但忽略“缺失”的元素(当然,我不能只添加零,因为这会弄乱均值)

有没有办法不用遍历数组就可以做到这一点?

附言。这些阵列都是二维的,但该阵列的坐标数量始终相同。 IE。第一个数组是 5 和 5,第二个是 6 和 6,第三个是 4 和 4。

一个例子:

np.array([[1, 2],    [3, 4]])
np.array([[1, 2, 3], [3, 4, 5]])
np.array([[7], [8]])

这个必须给

(1+1+7)/3  (2+2)/2   3/1
(3+3+8)/3 (4+4)/2 5/1

图形化的:

[1, 2]    [1, 2, 3]    [7]
[3, 4] [3, 4, 5] [8]

现在想象一下,这些二维数组被放置在彼此之上,坐标重叠有助于该坐标的平均值。

最佳答案

numpy.ma.mean允许您计算非屏蔽数组元素的平均值。但是,要使用 numpy.ma.mean,您必须首先将三个 numpy 数组组合成一个掩码数组:

import numpy as np
x = np.array([[1, 2], [3, 4]])
y = np.array([[1, 2, 3], [3, 4, 5]])
z = np.array([[7], [8]])

arr = np.ma.empty((2,3,3))
arr.mask = True
arr[:x.shape[0],:x.shape[1],0] = x
arr[:y.shape[0],:y.shape[1],1] = y
arr[:z.shape[0],:z.shape[1],2] = z
print(arr.mean(axis = 2))

产量

[[3.0 2.0 3.0]
[4.66666666667 4.0 5.0]]

关于python - 计算不同长度数组的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10058227/

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