2 条题解
-
0
NUMPY041 题解:快速求和
题目
如何比 np.sum 更快地求小数组的和?
解题思路
使用
np.add.reduce()比np.sum()在某些场景下更快。代码
import numpy as np Z = np.arange(10) print(np.add.reduce(Z))代码详解
np.arange(10)—— 创建[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]np.add.reduce(Z)—— 累加所有元素
原理
np.add.reduce()等价于:0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45add.reduce vs sum
# np.sum 的实现 np.sum(Z) == Z.sum() # np.add.reduce 的实现 np.add.reduce(Z) == 0 + 1 + 2 + ... + 9性能对比
import numpy as np import time Z = np.arange(1000) # 方法1 start = time.time() for _ in range(10000): np.sum(Z) print(f"sum: {time.time() - start:.4f}s") # 方法2 start = time.time() for _ in range(10000): np.add.reduce(Z) print(f"add.reduce: {time.time() - start:.4f}s")常用 reduce 操作
np.add.reduce(Z) # 求和 np.multiply.reduce(Z) # 累乘 np.logical_and.reduce(Z) # 逻辑与核心知识点
np.add.reduce()—— 累加- reduce 是函数式编程的概念
- 对于大数组,差异不明显
- 1
信息
- ID
- 92
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者