在不修改数组a的地址的情况下,将数据从数组b复制到数组a的最快方法是什么?我之所以需要这个方法,是因为一个外部库(PyFFTW)使用了一个指向我的数组的指针,而这个指针是不能改变的。
例如:
a = numpy.empty(n, dtype=complex)
for i in xrange(a.size):
a[i] = b[i]
可以在没有循环的情况下做到这一点吗?
发布于 2011-06-22 05:15:42
我相信
a = numpy.empty_like(b)
a[:] = b
将快速复制值。正如Funsi提到的,numpy的最新版本也有copyto
功能。
发布于 2014-04-26 07:09:28
a = numpy.array(b)
甚至比建议的numpy v1.6版本的解决方案更快,并且还复制了数组。但是,我不能用copyto(a,b)来测试它,因为我没有最新版本的numpy。
发布于 2011-06-22 13:46:36
您可以轻松使用:
b = 1*a
这是最快的方法,但也有一些问题。如果你不直接定义a
的dtype
,也不检查b
的dtype
,你会有麻烦的。例如:
a = np.arange(10) # dtype = int64
b = 1*a # dtype = int64
a = np.arange(10.) # dtype = float64
b = 1*a # dtype = float64
a = np.arange(10) # dtype = int64
b = 1. * a # dtype = float64
我希望,我能把这一点说清楚。有时,您只需执行一次小小的操作即可更改数据类型。
https://stackoverflow.com/questions/6431973
复制相似问题