使用以下方法:
myArray = [0,1] * NUM_ITEMS
期望结果(2D数组):
[[0,1],[0,1],[0,1]...]
实际结果(扩展的1d数组):
[0,1,0,1,0,1...]
我该如何达到期望的结果,最好不使用numpy?
使用以下方法:
myArray = [0,1] * NUM_ITEMS
期望结果(2D数组):
[[0,1],[0,1],[0,1]...]
实际结果(扩展的1d数组):
[0,1,0,1,0,1...]
可以使用列表推导式来解决这个问题:
>>> NUM_ITEMS = 5
>>> my_array = [[0, 1] for _ in range(NUM_ITEMS)]
>>> my_array
[[0, 1], [0, 1], [0, 1], [0, 1], [0, 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]])
[[0, 1]]*NUM_ITEMS
之前,请注意,即使看起来可以运行,但实际上是行不通的(参考此链接)。请注意,这种方法会导致子列表之间的更改互相影响。 - user2357112