在Python中快速访问和更新整数矩阵或数组

时间:2012-07-17 06:33:31

标签: python performance

我需要创建像[[0,1,2],[4,4,5,7]...[4,5]]这样的整数数组。内部阵列的大小可以改变。内部数组的最大数量为2^26。那么您建议以最快的方式更新此阵列。 当我使用list=[[]] * 2^26时,初始化非常快,但更新速度非常慢。相反,我使用

list=[] , for i in range(2**26): list.append.([])

现在初始化很慢,更新很快。例如,对于16777216内部阵列和0.213827311993每个阵列上的元素数量为2 ^ 26元素阵列,需要1.67728900909秒。它很好,但我会工作更大的数据,因此我需要最好的方法。初始化时间并不重要。 谢谢。

1 个答案:

答案 0 :(得分:0)

你问的是一个很大的问题。不同的数据结构具有不同的属性一般来说,如果您需要快速访问,请不要使用列表!它们具有线性访问时间,这意味着,您放入它们的次数越多,访问元素的平均时间就越长。

你也许可以使用numpy?该库具有可以非常快速地访问的矩阵,并且可以在运行中重新整形。但是,如果要添加或删除行,它可能会有点慢,因为它通常会重新分配(从而复制)整个数据。所以这是一个权衡。

如果要有这么多不同大小的内部数组,也许你可以拥有一个包含内部数组的字典。我认为如果它被整数索引,它将比列表快得多。然后,可以使用numpy创建内部数组。