Как заменить один столбец значением в массиве 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