Numpy, заменить столбец с массивом - PullRequest
1 голос
/ 12 апреля 2019

Я пытаюсь заменить один или несколько столбцов новым массивом такой же длины.

a = np.array([[1,2,3],[1,2,3],[1,2,3]])
b = np.array([[0,0,0])
a[:, 0] = b

Я получил ошибку ValueError: could not broadcast input array from shape (3,1) into shape (3).Однако это работает, когда b имеет несколько столбцов.

a = np.array([[1,2,3],[1,2,3],[1,2,3]])
b = np.array([[0,7],[0,7],[0,7]])
a[:, 0:2] = b

array([[0, 7, 3],
       [0, 7, 3],
       [0, 7, 3]])

Как эффективно заменить столбец другим массивом?

Спасибо

J

Ответы [ 2 ]

3 голосов
/ 12 апреля 2019

Ваш пример будет работать нормально, если вы используете следующее так же, как вы используете a[:, 0:2] = b. [:, 0:1] фактически является только первым столбцом

a = np.array([[1,2,3],[1,2,3],[1,2,3]])
b = np.array([[0],[0],[0]])
a[:, 0:1] = b

# array([[0, 2, 3],
#        [0, 2, 3],
#        [0, 2, 3]])
2 голосов
/ 12 апреля 2019

У вас неправильная форма b.Вы должны передать ему обычный одномерный массив, если хотите заменить только один столбец:

a = np.array([[1,2,3],[1,2,3],[1,2,3]])
b = np.array([0,0,0])
a[:, 0] = b
a

Возвращает:

array([[0, 2, 3],
       [0, 2, 3],
       [0, 2, 3]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...