Замена элементов в массиве numpy - PullRequest
1 голос
/ 18 февраля 2020
import numpy as np

a = np.array([0.75, 0.5, 0.21])
one_list = [1] * 3
L_vec = np.diag(one_list)
L_vec[1,0] = a[0]
print(L_vec)

Ожидаемый результат:

[[1,0,0],[0.75,1,0],[0,0,1]]

Фактический результат:

[[1 0 0]
 [0 1 0]
 [0 0 1]]

Это результат, который я получил. Понятия не имею почему.

1 Ответ

1 голос
/ 18 февраля 2020

По умолчанию dtype для np.diag равно int

преобразовать его в float, чтобы ваши значения с плавающей точкой из массива a могли заменить старое значение

L_vec = L_vec.astype(float)

Используйте приведенный ниже код

a = np.array([0.75, 0.5, 0.21])
one_list = [1]*3
L_vec = np.diag(one_list)
L_vec = L_vec.astype(float)

L_vec[1,0] = a[0]
print(L_vec)

Выход:

[[1.   0.   0.  ]
 [0.75 1.   0.  ]
 [0.   0.   1.  ]]

Вы можете проверить тип данных, используя print(L_vec.dtype)

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