如何将数据从一个numpy数组复制到另一个数组

100 投票
8 回答
120329 浏览
提问于 2025-04-16 20:02

从数组b复制数据到数组a的最快方法是什么,同时又不改变数组a的地址。我需要这样做是因为一个外部库(PyFFTW)使用了指向我的数组的指针,这个指针不能改变。

举个例子:

a = numpy.empty(n, dtype=complex)
for i in xrange(a.size):
  a[i] = b[i]

有没有办法不使用循环来完成这个操作?

8 个回答

23
a = numpy.array(b)

这个方法比建议的解决方案要快得多,适用于numpy v1.6之前的版本,而且它还会复制数组。不过,我没法和copyto(a,b)进行比较,因为我没有最新版本的numpy。

31

NumPy 1.7 版本有一个叫 numpy.copyto 的功能,可以满足你的需求:

numpy.copyto(dst, src)

这个功能可以把一个数组的值复制到另一个数组中,并根据需要进行扩展。

详细信息请查看: https://docs.scipy.org/doc/numpy/reference/generated/numpy.copyto.html

95

我认为

a = numpy.empty_like(b)
a[:] = b

会很快地复制这些值。正如Funsi提到的,最近版本的numpy也有一个叫做copyto的功能。

撰写回答