Кажется, numpy
теряет точность значений numpy.int64 при преобразовании в типы с плавающей запятой.
Моя версия numpy - 1.15.4, которая , похоже, исправляет эту ошибку .
Вот пример:
>>> value = 734625324872288246
>>> value_plus_1 = 734625324872288246 + 1
>>> items = [value, value_plus_1]
>>> value.bit_length()
60
>>> value_plus_1.bit_length()
60
>>> import numpy as np
>>> a = np.array(items, dtype = np.float128) # larger than needed for value
>>> a
array([7.34625325e+17, 7.34625325e+17], dtype=float128)
>>> a.astype(np.int64) # larger than needed for value
array([734625324872288256, 734625324872288256])
>>> np.__version__
'1.15.4'
Как видите, теперь оба значения в массиве эквивалентны, что свидетельствует о потере точности, которая, как я предполагаю, происходит при приведении к float.
У меня вопрос;Есть ли что-то, что я делаю не так, когда создаю неповоротливые массивы, которые можно исправить, чтобы не потерять точность?