我想像这样生成一个numpy 1D数组:
n_1,n_2,n_3,... n_N是不同的,N可以非常大。
这里我随机生成一个数组nv=[n_1, n_2, ...,n_N]
来显示我目前可以使用的方法:
nv = np.random.randint(3, 10+1, size=(1000000,))
np.concatenate([i*np.ones((j,)) for i,j in zip(range(1000000), nv)])
所以我的问题是:有更好的方法来做这件事吗?
我还有关于1D numpy数组生成的另一个问题,请参阅: How to generate a 1D numpy array like [0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 0, 1, 2, 3, 4, 5, 0, …]?
答案 0 :(得分:2)
实际上有一个功能:
numpy.repeat(numbers_to_repeat, numbers_of_repetitions)
如果用“数字0”,“数字1”等,你的意思是从0开始的自然数,而不是某些输入数组的元素,那就是
numpy.repeat(numpy.arange(N), numbers_of_repetitions)