一定大小的Python类型数组



这将创建一个类型为signed int的空数组:

import array
a = array.array('i')

什么是一个有效的(性能明智的)方式来指定数组的长度(以及数组的秩-维数)?

我理解NumPy允许在创建时指定数组大小,但它可以在标准Python中完成吗?

在python中初始化固定大小的数组
这主要处理列表,并且不考虑性能。使用数组而不是列表的主要原因是性能。

数组构造函数接受iterable作为第二个参数。因此,下面的工作可以有效地创建并初始化数组为0. N-1:

x = array.array('i', range(N))

这不会创建一个单独的N元素向量或列表。

(如果使用python 2,请使用xrange代替)。当然,如果您需要不同的初始化,您可以使用生成器对象而不是range。例如,可以使用生成器表达式用零填充数组:

a=array.array('i',(0 for i in range(N)))

Python没有2D(或更高)数组。你必须从一列1D数组中构造一个。

事实是,如果你正在寻找一个高性能的实现,你可能应该使用Numpy。

简单快捷:

array.array('i', [0]) * n

在我的机器中初始化数组的不同方式的计时:

n = 10 ** 7
array('i', [0]) * n     #  21.9 ms
array('i', [0]*n)       # 395.2 ms
array('i', range(n))    # 810.6 ms
array('i', (0 for _ in range(n)))  # 1238.6 ms

你说

使用数组而不是列表的主要原因是性能

数组使用的内存肯定比列表少。

但是通过我的实验,我发现没有证据表明数组总是比普通列表快。

相关内容

  • 没有找到相关文章

最新更新