Python:如何复制矩阵的同一行?

Python:如何复制矩阵的同一行?,python,arrays,numpy,matrix,Python,Arrays,Numpy,Matrix,如何将数组的每一行复制n次 因此,如果我有一个2x3数组,并且我将每行复制3次,我将有一个6x3数组。例如,我需要在下面将A转换为B: A = np.array([[1, 2, 3], [4, 5, 6]]) B = np.array([[1, 2, 3], [1, 2, 3], [1, 2, 3], [4, 5, 6], [4, 5, 6],

如何将数组的每一行复制n次

因此,如果我有一个
2x3
数组,并且我将每行复制3次,我将有一个
6x3
数组。例如,我需要在下面将
A
转换为
B

A = np.array([[1, 2, 3],
              [4, 5, 6]])

B = np.array([[1, 2, 3],
              [1, 2, 3],
              [1, 2, 3],
              [4, 5, 6],
              [4, 5, 6],
              [4, 5, 6]])

如果可能的话,我希望避免
for
循环。

如果我读得正确,这可能是您想要的,假设您从
mat开始:

v1=[3,2]
v3=v1[:]*10
print(v3)
transformed = np.concatenate([np.vstack([mat[:, i]] * 3).T for i in range(mat.shape[1])], axis=1)
下面是一个可验证的示例:

# mocking a starting array
import string
mat = np.random.choice(list(string.ascii_lowercase), size=(5,3))

>>> mat
array([['s', 'r', 'e'],
       ['g', 'v', 'c'],
       ['i', 'b', 'd'],
       ['f', 'g', 's'],
       ['o', 'm', 'w']], dtype='<U1')
#模拟起始数组
导入字符串
mat=np.random.choice(list(string.ascii_小写),size=(5,3))
>>>垫子
数组(['s',r',e'],
[g',v',c'],
[i'、[b'、[d'],
[f',g',s'],
['o','m','w']],dtype='可用于整数位置索引:

B = A[np.repeat(np.arange(A.shape[0]), 3)]

array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3],
       [4, 5, 6],
       [4, 5, 6],
       [4, 5, 6]])

np.repeat
正是您要查找的内容。您可以使用
axis
选项指定要复制行


B=np.重复(A,3,axis=0)

嗨,欢迎来到SO。请添加您迄今为止所做的,并确保访问我们的。特别是,这将帮助您改进您的问题。这将[3,2]串联10次v1。我需要[3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2]现在我使用np.重复(矩阵[np.newaxis,:],10,0),但是python克隆了十次矩阵,而不是每一行。不,我想复制这些行。所以我想从你的矩阵中得到一个这样的矩阵:[[s,r,e][s,r,e][s,r,e][g,v,c][g,v,c]等等。这不是你在问题和你给@KeremYes提供的评论中所说的,因为我不要求复制所有矩阵,而是每一行。这是一个相对容易的解决方法。但下次请在问题中包括示例输入和输出。
B = A[np.repeat(np.arange(A.shape[0]), 3)]

array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3],
       [4, 5, 6],
       [4, 5, 6],
       [4, 5, 6]])