2016-05-18 13 views
0

У меня есть массив numpy с 3 элементами; из этого массива я хотел бы создать список, в котором каждый элемент находится в научной нотации, и не строка. Кажется, это должно быть легко, но у меня проблемы с этим. Мой текущий сценарий выглядит следующим образом:Создайте список элементов с каждым элементом с научной нотацией

import numpy as np 

ary = np.array([2.124598e+00, 9.1542e+00, 1.049e+00]) 
ary = ary.astype(np.float) 
ary = ary.tolist() 
ary = ['%.9e' % x for x in ary] 
print(ary) 
print(type(ary)) 

Выход:

['2.124598000e+00', '9.154200000e+00', '1.049000000e+00'] 
<type 'list'> 

Как я могу поддерживать научные обозначения для каждого элемента, и имеют тип элемента нестроковой?

Редактировать: Целью здесь является создание входного файла, поэтому форматирование выполняется в соответствии с форматированием известного входного файла. Мой идеальный выход заключается в следующем:

[2.124598000e+00, 9.154200000e+00, 1.049000000e+00] 
<type 'list'> 

Удаление ['%.9e' % x for x in ary] дает мне следующее, без научной нотации, что я ищу:

[2.124598, 9.1542, 1.049] 
<type 'list'> 
+1

Просто блуждающий, зачем вам это нужно? Если вы выполняете математические операции, вы можете преобразовать результат в научную нотацию после ее получения. – sbowde4

+0

@ sbowde4 - Я пишу входной файл, и я пытаюсь сопоставить форматирование существующего входного файла. – AaronJPung

ответ

0

Вы фактически превращающего список поплавка, ичных, в список строк, когда вы делаете

ary = ['%.9e' % x for x in ary] 

Это, вероятно, будет лучше переносить точность Numpy буев в ваших дальнейших вычислений, а затем формат т количество нужных цифр, которые вам нужны/нужны в конце для вывода.