使用 Python 对列表中包含的多个列表的列求平均值

2019-09-20 19:30:05 +08:00
 kayseen
数据结构是列表中嵌套列表的形式;
比如:
list = [[1,2,3,4],[3,4,5,6],[6,7,8,9]]
对列表中的每一列求平均值,
比如求 1,3,6 的平均值,4,6,8 的平均值,

请教下这种用 pandas 可以实现吗?

这种求平均值的话,在 python 中使用什么方法实现比较好?


先忽略使用 for 循环吧...
12776 次点击
所在节点    Python
9 条回复
ZRS
2019-09-20 19:39:00 +08:00
import numpy as np

sample = np.array([[1,2,3,4],[3,4,5,6],[6,7,8,9]])

res = sample.mean(axis=1)
ZRS
2019-09-20 19:46:27 +08:00
列表生成式也可以做 不过可读性不太好
sample = [[1,2,3,4],[3,4,5,6],[6,7,8,9]]

res = [sum([i[ind] for i in sample])/len(sample) for ind in range(len(sample[0]))]
zzzbkl
2019-09-20 19:48:37 +08:00
numpy 转置再求均值试试看
tennc
2019-09-20 19:59:32 +08:00
```python
import numpy as np

lista = [[1,2,4,6],[2,5,6,7],[5,4,6,7],[6,8,2,9]]

a = np.array(lista)

print(np.mean(a,axis=1))

[3.25 5. 5.5 6.25]

```
kayseen
2019-09-20 20:19:47 +08:00
@tennc
谢谢哈,刚刚试了下,感觉这个返回值有点奇怪啊,竟然没有逗号间隔。。。
kayseen
2019-09-20 20:20:32 +08:00
@zzzbkl
@ZRS
谢谢哈,用 numpy 实现了
SlipStupig
2019-09-20 20:44:00 +08:00
@ZRS python 有统计库

```python
>>> import statistics
... p = [[1,2,3], [3,4,5]]
>>> print([statistics.mean(g) for g in p])
[2, 4]
```
necomancer
2019-09-22 16:45:04 +08:00
In [1]: import numpy as np
In [2]: a = np.ones(3)
In [3]: a
Out[3]: array([1., 1., 1.])

In [4]: print(a)
[1. 1. 1.]

In [5]: a.__repr__()
Out[5]: 'array([1., 1., 1.])'

In [6]: a.__str__()
Out[6]: '[1. 1. 1.]'
lyang
2019-09-27 17:09:06 +08:00
@ZRS
可以这样
```
[sum(i)/len(i) for i in zip(*list)]
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/602653

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX