python - 我想在 for 循环中添加所有列表并制作一个 ndarray
问题描述
例如我有一个列表列表
[[1,2,3], [4,5,6], [7,8,9], [10,11,12], ...]
我想在 for 循环中添加所有列表并制作一个 ndarray,
像下面这样
for list in lists:
sum function...
结果我想要的是
[22, 26, 30]
我怎样才能把它写成一个很好的代码?
解决方案
如果您使用的是 NumPy,则非常简单:
import numpy as np
l = [[1,2,3], [4,5,6], [7,8,9], [10,11,12]]
arr = np.array(l)
result = arr.sum(axis=0)
print(result)
# [22 26 30]
对于纯 Python 解决方案:
l = [[1,2,3], [4,5,6], [7,8,9], [10,11,12]]
result = [sum(column) for column in zip(*l)]
print(result)
# [22, 26, 30]
NumPy 解决方案会更快。
In [1]: import numpy as np
In [2]: arr = np.arange(10 ** 6).reshape(10 ** 3, 10 ** 3)
In [3]: %timeit arr.sum(axis=0)
881 µs ± 22.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [4]: l = arr.tolist()
In [5]: %timeit [sum(x) for x in zip(*l)]
76.8 ms ± 1.84 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
推荐阅读
- python - 如何将整个语句作为函数参数传递?Python
- java - Android 绑定 JAR:类解析参数OutOfRangeException
- kubernetes - 我写了一个 k8s 部署 yml 示例,但它无法运行
- python - 是否可以使用 Dash 构建自定义模块,类似于我们可以使用 JS 框架构建的 UI/FE?特别是 Dash 与 React/Js 框架?
- c# - 为什么类字段会导致空 JSON 响应数据?
- c# - 如何将字符串转换为控件和方法?
- mongodb - Mongodb 变更流监听新数据
- webpack - 网页包。找不到模块'webpack-cli/bin/config-yargs'
- python - 在 Python 中解码 html 中的 unescape unicode
- javascript - 无法理解出了什么问题