解决方案 1 np.add.reduce()
可以使用np.add的reduce属性:
a = np.array([100, 100])
b = np.array([200, 200])
c = np.array([1000, 2000])
L = [a, b, c]
np.add.reduce(L)
结果:
array([1300, 2300])
所有接受两个in-arguments的通用函数都有一个reduce属性,像reduce一样应用这个函数,即:
np.add.reduce(L)
变成:
np.add(np.add(L[0], L[1]), L[2])
如果列表 L 变大,请添加更多括号和适当的 np.add 调用。
来自文档:
文档字符串:
reduce(a, axis=0, dtype=None, out=None, keepdims=False)
通过沿一个轴应用 ufunc,将a 的维度减少一。
解决方案 2 np.sum()
或者,您可以沿第一个轴使用np.sum:
>>> np.sum(L, axis=0)
array([1300, 2300
性能
两者的表现似乎是一样的。
对于小数组:
a = np.array([100, 100])
b = np.array([200, 200])
c = np.array([1000, 2000])
L = [a, b, c, a, b, c, a, b, c]
reduce 快一点:
%timeit np.sum(L, axis=0)
10000 loops, best of 3: 20.7 µs per loop
%timeit np.add.reduce(L)
100000 loops, best of 3: 15.7 µs per loop
对于大型数组:
size = int(1e6)
a = np.random.random(size)
b = np.random.random(size)
c = np.random.random(size)
L = [a, b, c, a, b, c, a, b, c]
没有区别:
%timeit np.sum(L, axis=0)
10 loops, best of 3: 41.5 ms per loop
%timeit np.add.reduce(L)
10 loops, best of 3: 41.9 ms per loop