Python, Numpy: невозможно присвоить значения массива numpy столбцу матрицы - PullRequest
0 голосов
/ 28 октября 2018

Я новичок в Python, и я пытаюсь понять синтаксическую проблему.У меня есть пустая матрица:

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

Я хочу применить функцию Softmax к каждому ее столбцу.Код довольно прост.Не сообщая обо всем цикле, скажем, я сделал это для первого столбца:

w = x[:,0]  # select a column
w = np.exp(w)  # compute softmax in two steps
w = w/sum(w)
x[:,0] = w   # reassign the values to the original matrix

Однако вместо значений w: array([0.09003057, 0.24472847, 0.66524096]) только матрица нулей присваивается матрице, которая возвращает:

 np.array([[0, 2, 3, 6],
           [0, 4, 5, 6], 
           [0, 8, 7, 6]])

Почему это?Как я могу исправить эту проблему?Спасибо

1 Ответ

0 голосов
/ 28 октября 2018

Тип значений вашей матрицы - int, и во время назначения значения softmax преобразуются в int, следовательно, в нули.

Создайте свою матрицу следующим образом:

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

Теперь, после присвоения значений softmax:

w = x[:,0]  # select a column
w = np.exp(w)  # compute softmax in two steps
w = w/sum(w)
x[:,0] = w   # reassign the values to the original matrix

x получается:

array([[0.09003057, 2., 3., 6.],
       [0.24472847, 4., 5., 6.],
       [0.66524096, 8., 7., 6.]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...