gpt4 book ai didi

python - 没有 C 扩展的 Python 中的快速二维数组(矩阵)

转载 作者:行者123 更新时间:2023-12-03 23:25:17 26 4
gpt4 key购买 nike

我需要为可使用 Python 2.7 扩展的应用程序编写插件。它需要执行一个相当复杂的动态算法,该算法适用于整数的矩形矩阵。

该应用程序附带的默认 Python 安装不包括像 numpy 这样的数字库。 ,所以不幸的是,我只能使用 Python stdlib 来实现它。 .

我尝试了几种不同的方法来表示内存中的矩阵:

values = defaultdict(int)
values = [[0 for _ in range(width)] for _ in range(height)]
values = [0] * (width * height) # access like values[j*width + i] later
values = [[0] * width for _ in range(height)]

dict 方法只是为了完整性,它实际上表现不佳,因为每个元素都被访问。

根据我的测量,最后一个似乎是构建和访问速度最快的。但是,令我惊讶的是没有内置矩阵功能。根据我目前对 Python 的了解,如果您在 stdlib 中没有发现一些明显的功能, ,最可能的原因是你看的不够仔细。

所以我想知道这是否可以进一步优化。例如使用 array模块或其他一些我不知道的功能。

最佳答案

array当矩阵变大时,模块可能会更快,因为它可以更紧凑地打包值;它可以与 values[j*width + i] 一起使用惯例。但是不,Python 标准库中没有多维数组,这可能是因为 (a) Numpy 已经有效地填补了这个领域,并且 (b) 如果性能不是最重要的,你总是可以制作一个列表列表。

最快的选择实际上取决于算法。 dict当您处理的矩阵非常稀疏时(在 DP 算法中它们通常不是,至少在我看到的矩阵中不是),基于 -based 的方法实际上可能是最快的。

关于python - 没有 C 扩展的 Python 中的快速二维数组(矩阵),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9490628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com