12

我有一个具有这些尺寸(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]]

谢谢你。

4

2 回答 2

18

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]]
于 2018-11-10T13:09:44.633 回答
0

要在 NumPy 中创建一个空的多维数组(例如,一个二维数组 m*n 来存储您的矩阵),以防您不知道要追加多少行并且不关心斯蒂芬西蒙斯提到的计算成本(即在每次追加时重新构建数组),您可以将要追加到的维度压缩到 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.]]
于 2018-11-10T13:29:45.953 回答