У меня есть некоторые данные, хранящиеся в структурированном массиве numpy, который я хотел бы записать в файл. Поскольку я генерирую некоторый код для соответствия существующему формату вывода, который экспортировал более визуально приятную таблицу, мне нужно выводить эти данные с помощью разного разделителя пробелов.Запись строки из структурированной массива numpy с разным разделителем
Используя простой пример:
import numpy as np
x = np.zeros((2,),dtype=('i4,f4,a10'))
x[:] = [(1,2.,'Hello'),(2,3.,'World')]
С желаемым выходом:
1 2.00 Hello
2 3.00 World
Теперь я знаю, что я мог бы сделать это:
for row in x:
print('%i %.2f %s' % (row[0], row[1], row[2]))
Который работает нормально, но это представляется слишком многословным, если у вас много столбцов. Сейчас на моем выходе 8.
Я новичок в Python (от MATLAB), есть ли более общее утверждение, которое я мог бы использовать для «свертывания» всех столбцов? Я думал что-то вроде строк print('%i %.2f %s' % val for val in row)
, но это просто печатает 2 генератора. Когда я столкнулся с генератором при использовании re.split
, я мог бы использовать list()
, чтобы получить желаемый результат, но я не думаю, что использование чего-то похожего, скажем, str()
для этого случая будет делать то, что я ищу.
Можете ли вы рассказать о том, как выглядит '' разный разделитель пробелов '?Какими правилами следует количество пробелов? – cel
@cel Нет правила, однако я указываю его в строке формата – excaza
Если количество пробелов полностью произвольно и не соответствует какому-либо шаблону, вы, вероятно, не сможете добиться большего, чем указать строку формата вручную. Если вы переключитесь на 'string.format', вы можете по крайней мере объединить форматирование с распаковкой кортежа:' '{} {: .2f} {} '. Format (* rows)'. – cel