Странное форматирование значений при преобразовании списков в массив numpy

#python #arrays #numpy #jupyter

#python #массивы #numpy #jupyter

Вопрос:

Я испытываю что-то странное при преобразовании обычного массива (списков внутри списка) в numpy.array. Все значения, похоже, нормализованы странным образом. Это мой обычный список:

 print(output)
print(type(output))

result:
[[0, 301227, 0.86, 0.46, -3.55, 0.53, 135.96, 4, 0.49, 0.33, 0.33 ......
<class 'list'>
  

и когда я делаю то же самое с print(np.array(output)) , это результат:

 [[ 0.00000e 00  3.01227e 05  8.60000e-01  4.60000e-01 -3.55000e 00 5.30000e-01.....
<class 'numpy.ndarray'>
  

Я никогда раньше с этим не сталкивался. Надеюсь, кто-нибудь сможет пролить свет
Приветствия

Комментарии:

1. Они не нормализованы. Это исходные значения, только что напечатанные в экспоненциальной записи.

Ответ №1:

Значения остаются неизменными, это просто другая форма представления, называемая E notation,

Число mEn делится на две части, до и после e :

  1. m Часть слева — это множитель
  2. n Часть справа — это степень десяти, которую нужно умножить на

например

 3.01227e 05 = 3.01227 * 10^5 = 301227
  

Вы можете запретить использование обозначения E для небольших чисел с помощью set_printoptions :

 np.set_printoptions(suppress=True)
  

Флаг suppress из документов:

Если значение True, всегда выводите числа с плавающей запятой, используя запись с фиксированной запятой, и в этом случае числа, равные нулю с текущей точностью, будут выводиться как ноль. Если значение False, то используется научная нотация, когда абсолютное значение наименьшего числа равно < 1e-4 или отношение максимального абсолютного значения к минимальному равно > 1e3. Значение по умолчанию равно False.

Комментарии:

1. ах, спасибо! Тогда я могу отменить это с помощью этого np.set_printoptions(suppress=True)

2. Точно @Alex 🙂