gpt4 book ai didi

Python numpy 平均

转载 作者:行者123 更新时间:2023-11-28 22:03:54 31 4
gpt4 key购买 nike

像这样平均一个表不是问题

table = [[1,2,3,0],[1,2,3,0],[1,2,3,4]]

你可以

print numpy.average(table,axis=0)

但是如果我有不均匀的序列怎么办:

table = [[1,2,3],[1,2,3],[1,2,3,4]]

那么结果应该是:

1,2,3,4

因为包含数字 4 的元素只出现一次。和 4/1 = 4。但是 numpy 不允许这样做。

ValueError: setting an array element with a sequence.

最佳答案

您可以将数据输入一个 numpy 掩码数组,然后使用 np.ma.mean 计算均值:

import numpy as np
import itertools
data=[[1,2,3],[1,2,3],[1,2,3,4]]

rows=len(data)
cols=max(len(row) for row in data)
arr=np.ma.zeros((rows,cols))
arr.mask=True
for i,row in enumerate(data):
arr[i,:len(row)]=row

print(arr.mean(axis=0))

产量

[1.0 2.0 3.0 4.0]

当赋值时,数组的元素将被取消屏蔽(即 arr.mask[i,j]=False)。请注意下面生成的掩码:

In [162]: arr
Out[162]:
masked_array(data =
[[1.0 2.0 3.0 --]
[1.0 2.0 3.0 --]
[1.0 2.0 3.0 4.0]],
mask =
[[False False False True]
[False False False True]
[False False False False]],
fill_value = 1e+20)

如果您的数据相当短,yosukesabai's method或者纯 Python 解决方案可能比我上面显示的更快。只有在数据非常大并且您有足够的 numpy 操作可以在数组上执行以使设置数组的初始成本值得时才投资制作屏蔽数组。

关于Python numpy 平均,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8106691/

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