python - 使用 numpy 添加多个 ndarry

标签 python numpy vector

我对 python numpy 很陌生。

如果我有一个 numpy 向量列表。确保计算速度快的最佳方法是什么?

我目前正在这样做,但我发现它太慢了。

vec = sum(list of numpy vectors) # 4 vectors of 500 dimensions each

使用 sum 确实会占用相当多的时间。

最佳答案

这就是您想要做的(但是使用更大的数组)吗?

In [193]: sum([np.ones((2,3)),np.arange(6).reshape(2,3)])
Out[193]: 
array([[ 1.,  2.,  3.],
       [ 4.,  5.,  6.]])

每个 500 个维度是一个不清楚的描述。您的意思是形状为 (500,) 的数组还是 ndim==500 的数组?如果是后者,总共有多少个元素。

事实上,它是由 4 个数组组成的列表,这应该不是什么大问题。 array1 + array2 的时间是几点?

如果每个数组只有 500 个元素,则总时间很短:

In [195]: timeit sum([np.arange(500),np.arange(500),np.arange(500),np.arange(500)]) 
10000 loops, best of 3: 20.9 µs per loop

另一方面,具有许多小维度的数组的总和会更慢,因为这样的数组要大得多

In [204]: x=np.ones((3,)*10)

In [205]: timeit z=sum([x,x,x,x])
1000 loops, best of 3: 1.6 ms per loop

关于python - 使用 numpy 添加多个 ndarry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37766012/

相关文章:

python csv : merge rows with same field

python - 将 pycurl 与 gzip 流一起使用时出现错误 "Extra data: line 2 column 1"

python - Pandas read_sql() 可以返回哪些异常

python - 使用 Pythonic 向量化代码在 2D numpy 数组中索引不同大小的范围

python - 如何使用 python 绘制简单正弦波的死区

c++ - vector 、类和析构函数

c++ - 通过平移放大鼠标位置?

python - 如何使用 pylab 和 numpy 将正弦曲线拟合到我的数据中?

Python 新手 : manipulating arrays

c++ - std::vector<bool> 只有一个真元素