У меня есть два массива в типе float64, и когда я присваиваю значение первого второму, он округляет значение. Следующий простой код иллюстрирует проблему и исключает возможность простого представления чисел. (Я схематизировал фрагмент своего кода, чтобы было удобнее читать, но по сути это одно и то же)
X = zeros((2,2))
Y = zeros((2,2))
Z = X #a shorter way of making a new matrix, equal to X...
X[0,0] = Y[0,0]
Z[0,0]=0
print Y[0,0]
print X[0,0]
print type(Y[0,0])
print type(X[0,0])
if X[0,0]==Y[0,0]:
print'they are equal'
else:
print'they are NOT equal'
Я запустил этот небольшой фрагмент кода для всех коэффициентов, и все результаты похожи на эти:
1.90897e-14
0
<type 'numpy.float64'>
<type 'numpy.float64'>
they are NOT equal
Мне кажется, что массив X имеет другой тип, но создается он точно так же, с помощью функции zeros() со стандартным типом (float64)
Edit: The arrays are initialized with
X = zeros((2,2), dtype=float64)
Y = zeros((2,2), dtype=float64)
Также включил дополнительный полезный вывод в пример выше.
Редактировать: добавил проблемные строки, после того как нашел проблему