如何将矩阵的每一行复制N次

时间:2018-11-10 13:05:41

标签: python numpy matrix duplicates row

我有一个尺寸为(150,2)的矩阵,我想每行重复N次。我用一个例子来说明我的意思。

输入:

a = [[2, 3], [5, 6], [7, 9]]

假设N = 3,我需要此输出:

[[2 3]
 [2 3]
 [2 3]
 [5 6]
 [5 6]
 [5 6]
 [7 9]
 [7 9]
 [7 9]]

谢谢。

2 个答案:

答案 0 :(得分:4)

np.repeat与参数axis=0一起使用:

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

print(a)
[[2 3]
 [5 6]
 [7 9]]

r_a = np.repeat(a, repeats=3, axis=0)

print(r_a)
[[2 3]
 [2 3]
 [2 3]
 [5 6]
 [5 6]
 [5 6]
 [7 9]
 [7 9]
 [7 9]]

答案 1 :(得分:0)

要在NumPy中创建一个空的多维数组(例如,用于存储矩阵的2D数组m * n),以防万一您不知道要追加多少行并且不关心计算成本的问题,请参见Stephen Simmons提到(即在每次追加时重新构建数组),您可以将要追加到的维度压缩为0:X = np.empty(shape = [0,n])。

通过这种方式,您可以使用示例(此处m = 5,我们假设在创建空矩阵时我们不知道,而n = 2):

import numpy as np

            n = 2
            X = np.empty(shape=[0, n])

            for i in range(5):
                for j  in range(2):
                    X = np.append(X, [[i, j]], axis=0)

            print X

    which will give you:

    [[ 0.  0.]
     [ 0.  1.]
     [ 1.  0.]
     [ 1.  1.]
     [ 2.  0.]
     [ 2.  1.]
     [ 3.  0.]
     [ 3.  1.]
     [ 4.  0.]
     [ 4.  1.]]