通过参数设置 2D numpy 数组的值

set values of 2D numpy array by parameters

我需要通过已知的形状和参数以这种方式创建二维 np 数组:

import numpy as np
rows = 9
cols = 8
xrows = 3
xcols = 2

想要的结果:

([[ 1,  1,  4,  4,  7,  7, 10, 10],
    [ 1,  1,  4,  4,  7,  7, 10, 10],
    [ 1,  1,  4,  4,  7,  7, 10, 10],
    [ 2,  2,  5,  5,  8,  8, 11, 11],
    [ 2,  2,  5,  5,  8,  8, 11, 11],
    [ 2,  2,  5,  5,  8,  8, 11, 11],
    [ 3,  3,  6,  6,  9,  9, 12, 12],
    [ 3,  3,  6,  6,  9,  9, 12, 12],
    [ 3,  3,  6,  6,  9,  9, 12, 12]])
rows%xrows = 0
cols%xcols = 0 

rows是数组的行数,cols是数组的列数,xrows是每个切片的行数,xcols是每个切片的列数。 答案应该是一般的,而不是这个参数

IIUC,你可以使用:

((np.arange(rows//xrows*cols//xcols, dtype=int)+1)
 .reshape((rows//xrows,cols//xcols), order='F')
 .repeat(xrows,0)
 .repeat(xcols,1)
 )

输出:

array([[ 1,  1,  4,  4,  7,  7, 10, 10],
       [ 1,  1,  4,  4,  7,  7, 10, 10],
       [ 1,  1,  4,  4,  7,  7, 10, 10],
       [ 2,  2,  5,  5,  8,  8, 11, 11],
       [ 2,  2,  5,  5,  8,  8, 11, 11],
       [ 2,  2,  5,  5,  8,  8, 11, 11],
       [ 3,  3,  6,  6,  9,  9, 12, 12],
       [ 3,  3,  6,  6,  9,  9, 12, 12],
       [ 3,  3,  6,  6,  9,  9, 12, 12]])