在 Python 中复制二维数组的最快方法是什么?

Del*_*gan 3 python arrays performance copy

我必须在R*C网格上进行大量模拟。

这些模拟正在改变网格,所以我需要在每次之前复制我的参考网格,然后在新的网格上应用我的模拟功能。

在 Python 中执行此操作的最快方法是什么?


由于我没有在 StackOverflow 上找到类似的问题,我自己做了测试,并决定将它们张贴在这里,认为它们可能对其他人有用。

答案将是社区响应,以便其他人可以使用可能的其他技术添加新的测量。

如果添加另一种方法,请记住测量所有旧测试并更新它们,因为时间取决于所使用的计算机,避免对结果产生偏差。

Del*_*gan 8

我使用了一个 bash 变量来设置timeit测试:

setup="""
R = 100
C = 100
from copy import deepcopy
import numpy as np
ref = [[i for i in range(C)] for _ in range(R)]
ref_np = np.array(ref)
cp = [[100 for i in range(C)] for _ in range(R)]
cp_np = np.array(cp)
"""
Run Code Online (Sandbox Code Playgroud)

为方便起见,我还设置了一个临时别名pybench

alias pybench='python3.5 -m timeit -s "$setup" $1'
Run Code Online (Sandbox Code Playgroud)

蟒蛇 3

Python 3.5.0+(默认,2015 年 10 月 11 日,09:05:38)


这些结果并没有什么令人惊讶的地方,正如您可能已经猜到的那样,使用 NumPy 的速度要快得多,尤其是在避免每次都创建一个新表的情况下。