创建具有重复模式的 numpy 数组

Ohm*_*Ohm 3 python arrays numpy python-2.7

我正在尝试创建一个大小为 6*n 的数组,这样对于数组中每批 6 个单元格,我将具有以下整数值:

a = [n-2, n-1,n,n,n+1,n+1,n+2,n+3]
Run Code Online (Sandbox Code Playgroud)

我能想到的平庸的方法是使用这个例程:

a = []
for i in xrange(n):
    np.append(a,[n-2, n-1,n,n,n+1,n+1,n+2,n+3])
Run Code Online (Sandbox Code Playgroud)

但有没有一种更智能、更快速的方法呢?

Ash*_*ary 5

您可以使用numpy.tile

>>> n = 6
>>> arr = np.array([n-2, n-1, n, n, n+1, n+1, n+2, n+3])
>>> np.tile(arr, n)
array([4, 5, 6, 6, 7, 7, 8, 9, 4, 5, 6, 6, 7, 7, 8, 9, 4, 5, 6, 6, 7, 7, 8,
       9, 4, 5, 6, 6, 7, 7, 8, 9, 4, 5, 6, 6, 7, 7, 8, 9, 4, 5, 6, 6, 7, 7,
       8, 9])
# Reshape to get the desired output
>>> np.tile(arr, n).reshape(n, arr.size)
array([[4, 5, 6, 6, 7, 7, 8, 9],
       [4, 5, 6, 6, 7, 7, 8, 9],
       [4, 5, 6, 6, 7, 7, 8, 9],
       [4, 5, 6, 6, 7, 7, 8, 9],
       [4, 5, 6, 6, 7, 7, 8, 9],
       [4, 5, 6, 6, 7, 7, 8, 9]])
Run Code Online (Sandbox Code Playgroud)