Как мне экспортировать несколько массивов numpy в текстовый файл с определенным разделителем и разрывами строк?

#python #arrays #numpy

#python #массивы #numpy

Вопрос:

В моем файле python есть следующие три массива numpy:

 array([[    1,     1,    14,     1,    15],
       [    2,     1,    14,     1,    13],
       [    3,     1,    15,     1,    13]]) 

array([[   1,    1,    1,   13],
       [   2,    1,    1,   14],
       [   3,    1,    1,   15]])

array([[  10,    2,    4,   17],
       [  11,    3,    6,   20],
       [  12,    4,    6,   21]])
  

Я пытаюсь вывести их в один текстовый файл с пробелами и словами между ними. Таким образом, результат будет выглядеть следующим образом:

 ListA

1 1 14 1 15
2 1 14 1 13
3 1 15 1 13

ListB

1 1 1 13
2 1 1 14
3 1 1 15

ListC

10 2 4 17
11 3 6 20
12 4 6 21
  

Эти массивы имеют длину в тысячи строк, поэтому они должны быть масштабируемыми. Прямо сейчас я просто использую команду numpy save to text и вручную добавляю пробелы и заголовки между массивами.

Комментарии:

1. Что вы подразумеваете под «добавлением вручную»? С помощью текстового редактора или отдельных вызовов записи между savetxt вызовами? Что не так с тем, что вы делаете? Можно ли использовать полученный файл?

2. Я экспортирую каждый массив в текстовый файл, а затем вставляю его в результирующий файл. Затем я добавляю разрывы строк и заголовки, такие как ListA, listB и ListC. Файл можно использовать, однако у меня есть несколько массивов по несколько тысяч строк в каждом, поэтому для выполнения этого вручную требуется много времени. Мне было интересно, существует ли команда, в которой я мог бы распечатать ее в файл с помощью python и разрывов строк, заголовков и разделителя » «.

3. Вы можете открыть файл в режиме записи и вызвать savetxt его (а не имя файла) и использовать обычную запись в файл python для записи разделительных строк. Прочитайте savetxt документы, чтобы узнать, что он принимает в качестве файла. Прочитайте текст на python, который пишет Фике.

4. Вы можете открыть файл в режиме записи и вызвать savetxt его (а не имя файла) и использовать обычную запись в файл python для записи разделительных строк. Прочитайте savetxt документы, чтобы узнать, что он принимает в качестве файла. Прочитайте текст на python, который пишет Фике.

5. Спасибо! Я был незнаком с командами сохранения python.

Ответ №1:

Как указано в моих комментариях:

 In [48]: with open('test.txt','w') as f:
    ...:     f.write('ListAnn')
    ...:     np.savetxt(f, np.ones((3,4),int), fmt='%d')
    ...:     f.write('nListBnn')
    ...:     np.savetxt(f, np.arange(12).reshape(3,4), fmt='%d')
    ...:     f.write('nListCnn')
    ...:     np.savetxt(f, np.array([[1.234, 4.234,.34]]), fmt='%f')
  

производит:

 In [49]: cat test.txt
ListA

1 1 1 1
1 1 1 1
1 1 1 1

ListB

0 1 2 3
4 5 6 7
8 9 10 11

ListC

1.234000 4.234000 0.340000
  

Ответ №2:

Код:

 import re

txt = '''
array([[    1,     1,    14,     1,    15],
       [    2,     1,    14,     1,    13],
       [    3,     1,    15,     1,    13]]) 

array([[   1,    1,    1,   13],
       [   2,    1,    1,   14],
       [   3,    1,    1,   15]])

array([[  10,    2,    4,   17],
       [  11,    3,    6,   20],
       [  12,    4,    6,   21]])
'''

txt = txt.replace('array([[', 'ListAn', 1)
txt = txt.replace('array([[', 'ListBn', 1)
txt = txt.replace('array([[', 'ListCn', 1)
txt = re.sub('[[]),]', '', txt)
txt = re.sub('  ', ' ', txt)
print(txt)
  

Вывод:

 ListA
 1 1 14 1 15
 2 1 14 1 13
 3 1 15 1 13

ListB
 1 1 1 13
 2 1 1 14
 3 1 1 15

ListC
 10 2 4 17
 11 3 6 20
 12 4 6 21