У меня есть массив в таком формате:
[-22.99253267 -83.23210952 77.71126322 43.99377722 -41.75731176 89.02862477]
Я хотел бы распечатать этот массив, чтобы получить такой результат
[-22.992 -83.232 77.711 43.993 -41.757 89.028]
Я знаю, что будет аналогичный результат, если я использую np.set_printoptions(precision=3), но я хотел бы знать, как получить этот результат с помощью 9.3f.






Чтобы распечатать данные в столбце:
for data in x:
print '{:9.3f}'.format(data)
или
Чтобы распечатать данные в строке:
(не забудьте import sys)
for data in x:
sys.stdout.write('{:9.3f}'.format(data))
Я отредактировал вопрос, чтобы было понятнее, но ответ уже был здесь.
Быстро спросите себя, NPE, если вы не против. Есть ли преимущества в том, чтобы печатать данные в строке, а не добавлять их в список?
@BGlasbey предположим, что ваш массив состоит из тысяч данных с плавающей запятой, вам нужно будет сохранить этот список строк в памяти перед печатью. Так что это требует много памяти и времени. Просто распечатайте данные и покончите с этим.
@ J.Park Речь не шла о сравнении формата строки с форматом столбца. Каждому это нравится так, как он хочет. Я считаю, что @BGlasbey хотел, чтобы я имел возможность сказать, что создание for numbers in list: x = '{:9.3f}'.format(data) y.append(x) print(y) - это пустая трата памяти и времени.
Использование String.format ()
list = [-22.99253267, -83.23210952, 77.71126322, 43.99377722, -41.75731176, 89.02862477]
for numbers in list :
print('{:9.3f}'.format(data))
Я получаю вывод
-22.993
-83.232
77.711
43.994
-41.757
89.029
РЕДАКТИРОВАТЬ
Следуя комментарию OP, вот обновление, которое добавит все элементы в список.
y = []
list = [-22.99253267, -83.23210952, 77.71126322, 43.99377722, -41.75731176, 89.02862477]
for numbers in list:
x = '{:9.3f}'.format(data)
y.append(x)
print(y)
Выход
[' -22.993', ' -83.232', ' 77.711', ' 43.994', ' -41.757', ' 89.029']
Возможно, под data вы имели в виду numbers в .format. Во-вторых, вы успешно преобразовали list в список строк!
Спасибо за ответ. У меня есть еще один вопрос. Как я могу распечатать это как строку, а не как столбец?