#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