所以即时生成一个名为高度的numpy的随机列表......
heights = random.randint(10, size=random.randint(20))
我使用此列表进行测试,但我有一个条件,我需要在每次生成时将第一个数字附加到列表中。基本上我需要始终为生成的任何随机列表创建第一个数字中的2个。 所以如果列表如下:
[1 2 2 5 5 6 7 7 7 9]
我需要它看起来像:
[1 2 2 5 5 6 7 7 7 9 1]
我尝试使用
heights.append(heights[0])
但是我得到了一个错误。 这适用于列表,但不是numpy:/
答案 0 :(得分:3)
您可以使用
heights = np.random.randint(10, size=np.random.randint(1,21)); heights[-1] = heights[0]
预先分配正确大小的数组比使用np.append
,np.concatenate
或np.hstack
快得多:
In [100]: %timeit heights = np.random.randint(10, size=np.random.randint(1,21)); heights[-1] = heights[0]
100000 loops, best of 3: 1.93 us per loop
In [99]: %timeit heights = np.random.randint(10, size=np.random.randint(1,20)); heights = np.append(heights, heights[0])
100000 loops, best of 3: 6.24 us per loop
In [104]: %timeit heights = np.random.randint(10, size=np.random.randint(1,20)); heights = np.concatenate((heights, heights[0:1]))
100000 loops, best of 3: 2.74 us per loop
In [105]: %timeit heights = np.random.randint(10, size=np.random.randint(1,20)); heights = np.hstack((heights, heights[0:1]))
100000 loops, best of 3: 7.31 us per loop
答案 1 :(得分:0)
您还可以使用np.concatenate()
或np.hsatck()
:
heights = np.concatenate((heights, heights[0:1]))
或
heights = np.hstack((heights, heights[0:1]))