У меня есть два массива типа 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 относится к другому типу, но он создается таким же образом с помощью функции нулей () со стандартным типом (float64)
Редактировать: массивы инициализируются с
X = zeros((2,2), dtype=float64)
Y = zeros((2,2), dtype=float64)
Также включен дополнительный полезный отпечаток в приведенном выше примере.
Редактировать: добавлены проблемные строки, после того как я нашел проблему