Как показано в следующем коде, массив empty
заменяет мои значения int плавающими. Как я могу это предотвратить?Как сохранить значения int в массиве numpy.empty?
import numpy as np
a=np.empty(3)
a[0]=1
a[1]=2
a[2]=3
print a
Выход:
[1., 2., 3.]
В качестве примечания: Есть ли причина, что вам нужно использовать 'empty', а затем заполнить значения один за другим, вместо того, чтобы просто делать' а = np.array ([1, 2, 3]) '? Это позволило бы избежать проблемы, которую вы видите, поскольку по умолчанию 'dtype' для массива, построенного из последовательности, определяется значениями последовательности, поэтому вы получили бы' int'; когда он не знает значений, он не имеет никакой информации, поэтому он должен по умолчанию «float». – abarnert
@abarnert, спасибо за запрос, но я должен вычислить значения, и для этого мне нужен цикл 'for'. Проблема в том, что она не делает это всегда. Например, 'numpy.asarray()' будет сохранять формат! – Cupitor
Это точно точка: 'asarray' или' array' _can_ сохранить тип, потому что он _knows_ type; 'empty' _can't_ сохранить тип, потому что это не так. (Кроме того, вы можете легко превратить свой цикл 'for' в итератор, например, обернув его в функцию генератора, а затем передать итератору, например,« np.fromiter ». Или, конечно, создать« список » 'вместо этого перейти к' np.array'.) – abarnert