如何在不使用循环的情况下生成循环数字序列?

Sam*_*rad 4 python numpy vectorization

我想生成一个循环的数字序列,如:我试过的[A B C A B C]任意长度N:

import numpy as np
def cyclic(N):
    x = np.array([1.0,2.0,3.0]) # The main sequence
    y = np.tile(x,N//3) # Repeats the sequence N//3 times 
    return y
Run Code Online (Sandbox Code Playgroud)

但我的代码的问题是,如果我输入任何不能被三个可分割的整数,那么结果的长度(N)将比我想象的要小.我知道这是一个非常新的问题,但我真的被卡住了

Dan*_*l F 5

你可以使用 numpy.resize

x = np.array([1.0, 2.0, 3.0])

y = np.resize(x, 13)

y
Out[332]: array([ 1.,  2.,  3.,  1.,  2.,  3.,  1.,  2.,  3.,  1.,  2.,  3.,  1.])
Run Code Online (Sandbox Code Playgroud)

警告:这个答案不会延伸到2D,因为resize在重复之前会使阵列变平.