элементы numpy массива округляются автоматически?

У меня есть numpy массив плавающих в Python.

Когда я печатаю массив, первое значение:

[7.14519700e+04, .... 

Если, однако, я распечатываю только первое значение на своем собственном, распечатка гласит:

 71451.9699799 

Очевидно, что эти числа должны быть одинаковыми, поэтому я просто задался вопросом: массив просто показывает мне округлую версию элемента? Второе число здесь имеет 12 значащих цифр, а первое – только 9.

Наверное, мне просто интересно, почему эти цифры разные?

Это просто в печати, а не в хранилище. Единственная путаница может возникнуть из-за того, что в первом примере используются настройки точности печати numpy, а во втором – параметры печати общего питона.

Вы можете настроить точность numpy и распечатать

 numpy.set_printoptions(precision=20) print myarray` 

(отрегулируйте точность по вашим потребностям) или выберите количество значимых цифр в стандартном отформатированном формате на питоне:

 print ('%.20f' % myarray[0]) 

Внутреннее представление числа всегда одно и то же.

Типы в массиве numpy хорошо определены. Вы можете узнать, как они хранятся, numpy.dtype свойство numpy.dtype массива.

Например:

 import numpy a = numpy.zeros(10) print a.dtype 

покажет float64 , то есть 64-битное число с плавающей запятой.

Вы можете явно указать тип массива, используя либо общепринятый аргумент dtype, либо объект type dtype (то есть вещь, которая делает dtype).

 a = numpy.zeros(10, dtype='complex32') # a 32-bit floating point b = numpy.longdouble(a) # create a long-double array from a 

Что касается печати, это просто проблема форматирования. Вы можете крутить, как numpy печатает массив с помощью numpy.set_printoptions :

 >>> a = numpy.random.randn(3) # for interest, randn annoyingly doesn't support the dtype arg >>> print a [ 0.12584756 0.73540009 -0.17108244 -0.96818512] >>> numpy.set_printoptions(precision=3) >>> print a [ 0.126 0.735 -0.171 -0.968]