用可变的大小初始化二维数组

4

使用以下方法:

myArray = [0,1] * NUM_ITEMS

期望结果(2D数组):

[[0,1],[0,1],[0,1]...]

实际结果(扩展的1d数组):

[0,1,0,1,0,1...]

我该如何达到期望的结果,最好不使用numpy?

6
在有人建议使用[[0, 1]]*NUM_ITEMS之前,请注意,即使看起来可以运行,但实际上是行不通的(参考此链接)。请注意,这种方法会导致子列表之间的更改互相影响。 - user2357112
2个回答

5

可以使用列表推导式来解决这个问题:

>>> NUM_ITEMS = 5
>>> my_array = [[0, 1] for _ in range(NUM_ITEMS)]
>>> my_array
[[0, 1], [0, 1], [0, 1], [0, 1], [0, 1]]

1

由于您标记了数组,这里有一个使用numpy.tile的替代方案。

>>> import numpy as np
>>> NUM_ITEMS = 10
>>> np.tile([0, 1], (NUM_ITEMS, 1))
array([[0, 1],
       [0, 1],
       [0, 1],
       [0, 1],
       [0, 1],
       [0, 1],
       [0, 1],
       [0, 1],
       [0, 1],
       [0, 1]])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接