我正在使用Python 3,并且我正在尝试创建已知且固定大小的2D整数数组。我怎么能这样做?
我想到的数组是Python提供的array.array
,尽管我并不反对使用像NumPy这样的库。
我知道这可以通过列表完成,但我想使用数组,因为它们更节省空间。现在,我正在以这种方式初始化列表,但我想用数组替换它:
my_list = [[ 0 for _ in range(height) ] for _ in range(.width)]
例如,在C中,我会写
int my_array[ width ][ height ];
我如何在Python中执行此操作
答案 0 :(得分:3)
你可以使用numpy:
import numpy as np
my_array = np.zeros([height, width])
例如:
>>> np.zeros([3, 5])
array([[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]])
请注意,如果您特别需要整数,则应使用dtype
参数
>>> np.zeros([3, 5], dtype=int)
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
答案 1 :(得分:0)
您发布的代码的等价物是:
import numpy as np
my_array = np.empty([height, width])
empty
保留未初始化的空间,因此它比zeros
略快,因为zeros
必须确保所有内容最初都设置为0。
请注意,与C / C ++一样,您应该在读取之前编写值,因为它们最初“包含垃圾”。
文档:
https://docs.scipy.org/doc/numpy/reference/generated/numpy.empty.html
https://docs.scipy.org/doc/numpy/reference/generated/numpy.zeros.html