Python 如何在其内部重复此numpy数组?

Python 如何在其内部重复此numpy数组?,python,arrays,numpy,Python,Arrays,Numpy,我有一个z形状的数组(8,): 我想在保持其位置的同时再复制7次值,以创建形状(8,8)的数组zr,例如: >>> z array([-30000. , -30000. , -30000. , -30000. , -27703.12304688, -27703.15429688, -27703.70703125, -27703.67382812], [-30000.

我有一个
z
形状的数组
(8,)

我想在保持其位置的同时再复制7次值,以创建
形状
(8,8)
数组
zr
,例如:

    >>> z
    array([-30000.        , -30000.        , -30000.        , -30000.        ,
           -27703.12304688, -27703.15429688, -27703.70703125, -27703.67382812],
          [-30000.        , -30000.        , -30000.        , -30000.        ,
           -27703.12304688, -27703.15429688, -27703.70703125, -27703.67382812]
            .........)
我尝试了np.repeat(),但这会创建一个
形状数组
(64,)
,我想要
(8,8)

我做错了什么?

与列表一起使用可返回二维数组:

# tile improvement courtesy OP
np.tile(z, [8, 1])

如果您想要只读视图,则速度相当快:

np.broadcast_to(z, (8,)+z.shape)
你可以试试这个

np.tile(z,8).reshape(8,8)
repeat
without axis只按平面顺序复制每个元素

In [280]: np.repeat(z,4)                                                                               
Out[280]: array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3])
但可以将其按摩到您想要的阵列中:

In [281]: np.repeat(z,4).reshape(4,4)                                                                  
Out[281]: 
array([[0, 0, 0, 0],
       [1, 1, 1, 1],
       [2, 2, 2, 2],
       [3, 3, 3, 3]])
In [282]: np.repeat(z,4).reshape(4,4).T                                                                
Out[282]: 
array([[0, 1, 2, 3],
       [0, 1, 2, 3],
       [0, 1, 2, 3],
       [0, 1, 2, 3]])
如果
z
为(1,n),那么我们可以在第一个轴上重复:

In [283]: np.repeat(z[None,:],4,0)                                                                     
Out[283]: 
array([[0, 1, 2, 3],
       [0, 1, 2, 3],
       [0, 1, 2, 3],
       [0, 1, 2, 3]])

np.tile
可能更容易使用。在内部,它使用
repeat

只是
.reforme((8,8))
谢谢,我还使用了
np.tile(z,[8,1])
,这也很有效
In [280]: np.repeat(z,4)                                                                               
Out[280]: array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3])
In [281]: np.repeat(z,4).reshape(4,4)                                                                  
Out[281]: 
array([[0, 0, 0, 0],
       [1, 1, 1, 1],
       [2, 2, 2, 2],
       [3, 3, 3, 3]])
In [282]: np.repeat(z,4).reshape(4,4).T                                                                
Out[282]: 
array([[0, 1, 2, 3],
       [0, 1, 2, 3],
       [0, 1, 2, 3],
       [0, 1, 2, 3]])
In [283]: np.repeat(z[None,:],4,0)                                                                     
Out[283]: 
array([[0, 1, 2, 3],
       [0, 1, 2, 3],
       [0, 1, 2, 3],
       [0, 1, 2, 3]])