как продублировать каждую строку матрицы N раз Numpy - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть матрица с этими размерами (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 голосов
/ 10 ноября 2018

Чтобы создать пустой многомерный массив в 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.]]
0 голосов
/ 10 ноября 2018

Используйте 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]]
...