Повторите одномерный массив над столбцами - PullRequest
1 голос
/ 12 марта 2020

Довольно простой вопрос, у меня есть следующий массив:

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])

Я хочу повторить этот массив над столбцами, имея что-то вроде этого:

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

Итак, чтобы Я пытаюсь сделать это:

repeat_x = np.repeat(x, 3, axis = 1)

Однако я получаю следующую ошибку:

AxisError: axis 1 is out of bounds for array of dimension 1

Итак, есть ли способ / трюк для достижения моей цели без использования каких-либо вроде перекраивать?

Ответы [ 2 ]

3 голосов
/ 12 марта 2020

Попробуйте этот код:

np.array([x] * 3).T

Здесь 3 - количество повторений этих значений

0 голосов
/ 12 марта 2020

Чтобы сделать это исключительно в numpy, не возвращаясь к спискам python, вам нужно использовать expand_dims с последующей транспонированием или reshape для преобразования вектора в матрицу перед использованием repeat.

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
# array([1, 2, 3, 4, 5, 6, 7, 8])

x = x.reshape(-1, 1)
# array([[1],
#   [2],
#   [3],
#   [4],
#   [5],
#   [6],
#   [7],
#   [8]])

np.repeat(x.reshape(-1, 1), 3, 1)
# array([[1, 1, 1],
#    [2, 2, 2],
#    [3, 3, 3],
#    [4, 4, 4],
#    [5, 5, 5],
#    [6, 6, 6],
#    [7, 7, 7],
#    [8, 8, 8]])

Использование расширенного затемнения и транспонирования будет похоже на

np.repeat(np.expand_dims(x, 0).T, 3, 1)

Тот же результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...