Как заменить один столбец значением в массиве numpy?

у меня есть массив такой

import numpy as np

a = np.zeros((2,2), dtype=np.int)

Я хочу заменить первый столбец на значение 1. Я сделал следующее:--5-->

a[:][0] = [1, 1] # not working
a[:][0] = [[1], [1]] # not working

наоборот, когда я заменяю строки, это сработало!

a[0][:] = [1, 1] # working

у меня большой массив, поэтому я не могу заменить значение на значение.

3 ответов


вы можете заменить первый столбец следующим образом:

>>> a = np.zeros((2,2), dtype=np.int)
>>> a[:, 0] =  1
>>> a
array([[1, 0],
       [1, 0]])

здесь a[:, 0] означает "выбрать все строки из столбца 0". Значение 1 транслируется по этому выбранному столбцу, создавая желаемый массив (нет необходимости использовать list [1, 1], хотя вы можете).

синтаксис a[:][0] означает "выбрать все строки из массива a и затем выберите первую строку". Аналогично,a[0][:] означает " выберите первую строку a и затем выберите это все гребите снова". Вот почему вы можете успешно заменить строки, но не столбцы - необходимо сделать выбор для оси 1, а не только для оси 0.


необходимо указать номер столбцов следующим образом:

>>> a[::,0]=1
>>> a
array([[1, 0],
       [1, 0]])

подробнее о индексирование numpy.


вы можете сделать что-то вроде этого:

import numpy as np

a = np.zeros((2,2), dtype=np.int)
a[:,0] = np.ones((1,2), dtype=np.int)

пожалуйста, обратитесь к доступ к столбцам матрицы np