Python:如何复制矩阵的同一行?
如何将数组的每一行复制n次 因此,如果我有一个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],
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]])