#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
:
m
Часть слева — это множитель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 🙂