Python 在特定位置合并单个阵列

Python 在特定位置合并单个阵列,python,numpy,Python,Numpy,我刚学了python 我想问一下Ndarray numpy的事 例如,我有 a=np.array([3,2,3,9]) 如何使用循环复制a。 像这样 array([[3, 3, 3], [2, 2, 2], [3, 3, 3], [9, 9, 9]]) 我试过了 import numpy as np a = np.array([3, 2, 3, 9]) k = 3 for i in range(k): z = np.concatenate(

我刚学了python 我想问一下Ndarray numpy的事

例如,我有

a=np.array([3,2,3,9])

如何使用循环复制
a
。 像这样

array([[3, 3, 3],
       [2, 2, 2],
       [3, 3, 3],
       [9, 9, 9]])
我试过了

import numpy as np

a = np.array([3, 2, 3, 9])
k = 3

for i in range(k):
    z = np.concatenate((a, a), axis=0)

print(z)

尝试将
广播到

import numpy as np

a = np.array([3, 2, 3, 9])
k = 3
print(np.broadcast_to(a, (k, 4)).T)
# array([[3, 3, 3],
#        [2, 2, 2],
#        [3, 3, 3],
#        [9, 9, 9]])

有很多方法可以做到这一点。对于学习者来说,它们都是有教育意义的

另一个答案中建议的
broadcasating
应该很快,但可能有点难以理解

遵循您的连接线索:

In [301]: a = np.array([3, 2, 3, 9])                                                             
In [302]: np.concatenate([a,a,a])                                                                
Out[302]: array([3, 2, 3, 9, 3, 2, 3, 9, 3, 2, 3, 9])
In [303]: np.concatenate([a,a,a]).reshape(3,4)                                                   
Out[303]: 
array([[3, 2, 3, 9],
       [3, 2, 3, 9],
       [3, 2, 3, 9]])
In [304]: np.concatenate([a,a,a]).reshape(3,4).T                                                 
Out[304]: 
array([[3, 3, 3],
       [2, 2, 2],
       [3, 3, 3],
       [9, 9, 9]])
或者,由于要垂直排列值:

In [306]: a[:,None]                                                                              
Out[306]: 
array([[3],
       [2],
       [3],
       [9]])
In [307]: a[:,None].repeat(3,1)                                                                  
Out[307]: 
array([[3, 3, 3],
       [2, 2, 2],
       [3, 3, 3],
       [9, 9, 9]])
另一种方式:

In [308]: np.outer(a,np.ones(3,int))                                                             
Out[308]: 
array([[3, 3, 3],
       [2, 2, 2],
       [3, 3, 3],
       [9, 9, 9]])
或者在广播中使用外部:

In [309]: a[:,None]*np.ones(3,int)                                                               
Out[309]: 
array([[3, 3, 3],
       [2, 2, 2],
       [3, 3, 3],
       [9, 9, 9]])
用列表重复:

In [311]: np.concatenate([a[:,None]]*3, axis=1)                                                  
Out[311]: 
array([[3, 3, 3],
       [2, 2, 2],
       [3, 3, 3],
       [9, 9, 9]])

如果我使用循环呢?你需要使用Python循环吗?本机NumPy函数比它们的Python等价物快得多(它们是用C语言执行的)