如何快速生成一个特殊的numpy 1D阵列?

时间:2016-12-23 23:00:59

标签: numpy multidimensional-array python-3.5

我想像这样生成一个numpy 1D数组:

  1. 数字0重复n_0次
  2. 数字1重复n_1次
  3. 数字2重复n_2次
  4. ...
  5. 数字N重复n_N次
  6. 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, …]?

1 个答案:

答案 0 :(得分:2)

实际上有一个功能:

numpy.repeat(numbers_to_repeat, numbers_of_repetitions)

如果用“数字0”,“数字1”等,你的意思是从0开始的自然数,而不是某些输入数组的元素,那就是

numpy.repeat(numpy.arange(N), numbers_of_repetitions)