Я предполагаю, что ваш код выглядит примерно так
a1 = np.array([0, 0, 0])
update = [0.6402942957283034, 0.6017736334918196, 0.6096552413265736]
for i in range(0,3):
a1[i] = update[i]
print(a1)
который действительно печатает array([0 0 0])
Причина, по которой вы наблюдаете это поведение, состоит в том, что в отличие от списков Python, массивы numpy должны содержать значения одного типа. Когда вы создали массив a1
, вы не указали тип явно, создавая массив int64
. Попробуйте сделать
print(a1.dtype)
update
- это массив float64
, где все числа меньше 1. Когда вы конвертируете число с плавающей точкой <1 в int, оно становится равным 0. </p>
Решением вашей проблемы является явное указание типа массива a1
.
a1 = np.array([0, 0, 0], dtype='float64')
На другом примечании, почему вы копируете элемент за элементом? Вы могли бы сделать
a1 = np.asarray(update)