2016-01-26 3 views
1

У меня есть некоторые элементы, хранящиеся в numpy.array[]. Я хочу сохранить их в файле .txt. Дело в том, что он должен соответствовать определенному стандарту, что означает, что каждый элемент должен быть сохранен x строк в файле.Создание столбцов с numpy Python

Пример:

numpy.array[0] необходимо начать в строке 1, столбец 26.

numpy.array[1] потребности, чтобы начать в строке 1, столбец 34.

Я использую numpy.savetxt() для сохранения массивов в файл.

Позже я реализую это в цикле, чтобы создать файл «.txt» с лагром с координатами.

Edit: Это хороший пример был приведен ниже, это действительно указывает мою борьбу:

In [117]: np.savetxt('test.txt',A.T,'%20d %10d') 
In [118]: cat test.txt 
        0   6 
        1   7 
        2   8 
        3   9 
        4   10 
        5   11 

Опция FMT «% 20d% 10d» дает расстояние, которое зависит от последнего целого. Мне нужна опция, которая позволяет мне устанавливать интервал с левой стороны независимо от других целых чисел.

Шаблон необходимо установить целые числа в: XXXXXXXX.XXX YYYYYYY.YYY ZZZZ.ZZZ


Final Edit:

Я решил, создав тест, который проверяет, сколько пробелов в последний поплавок. Затем я смог предсказать количество пробелов, которые нужно было бы поместить в шаблон.

+0

Не сказал, что сообщение отвечает на мой вопрос @ k4ppa – CyberEngineer

ответ

2

Вы играли с fmt из np.savetxt?

Позвольте мне проиллюстрировать на конкретном примере (сорт, который вы должны были дать нам)

Сделать массив 2 строки:

In [111]: A=np.arange((12)).reshape(2,6) 
In [112]: A 
Out[112]: 
array([[ 0, 1, 2, 3, 4, 5], 
     [ 6, 7, 8, 9, 10, 11]]) 

Сохранить его, и получить 2 строки, 6 столбцов

In [113]: np.savetxt('test.txt',A,'%d') 
In [114]: cat test.txt 
0 1 2 3 4 5 
6 7 8 9 10 11 

сохранить транспонированной и получить 6 строк, 2 колонки

In [115]: np.savetxt('test.txt',A.T,'%d') 
In [116]: cat test.txt 
0 6 
1 7 
2 8 
3 9 
4 10 
5 11 

Помещенный более подробно в fmt в космос из колонн

In [117]: np.savetxt('test.txt',A.T,'%20d %10d') 
In [118]: cat test.txt 
        0   6 
        1   7 
        2   8 
        3   9 
        4   10 
        5   11 

Я думаю, вы можете понять, как сделать fmt строку, которая помещает ваши номера в правильных столбцах (присоединиться к 26 пробелов и т.д., или использовать левый и правильное обоснование - обычные проблемы форматирования Python).

savetxt также снимает открынный файл. Таким образом, вы можете открыть файл для записи, написать один массив, добавить некоторые строки наполнителя и написать другое. Кроме того, savetxt ничего не делает. Он просто выполняет итерации по строкам массива и записывает каждую строку в строку, например.

for row in A: 
    file.write(fmt % tuple(row)) 

Так что, если вам не нравится контроль, что savetxt дает вам, записать файл напрямую.

+0

В строках [117] и [118] ваш вывод с вашим форматированием дает вам интервал, который зависит от другого целого. Я ищу параметр fmt, который позволяет мне устанавливать интервалы с левой стороны независимо от других целых позиций. – CyberEngineer

+0

'fmt = '' * 26 + '% 5d' + '' * 10 + '% 10d'' или некоторая такая строковая конструкция. Или (строка форматирования «bruteforce» :)) 'fmt = '_____________% 6d __________% 10d''. – hpaulj

Смежные вопросы