Сохранить массивы из цикла в одном текстовом файле в столбцах - PullRequest
0 голосов
/ 06 февраля 2019

Я создаю массив нулей (587x1), в котором я хочу заменить ноль на единицу в определенной строке массива, заданного как индекс из другого файла.Эта часть прекрасно работает в моем коде до сих пор.

После этого я хочу сохранить все эти вновь созданные массивы в одном текстовом файле в виде столбцов рядом друг с другом, разделенных вкладками.Однако мой код перезаписывает массивы.Как мне удается добавить их рядом друг с другом в один файл?

Большое спасибо за вашу помощь!

Обновление: мне удалось записать все массивы в один файл, однако онитеперь просто печатаются друг на друге - как мне записать их в столбцы рядом друг с другом?

import os
import numpy as np
participants = ['001']
for vp in participants:
   with open('file.txt') as f:
      content = f.readlines()
   content = [x.strip() for x in content]
   content = map(int, content)
f = open(outfile.txt, 'w')       
for line in content:
      with open('outfile.txt', 'a') as f:
            arr = np.zeros((587, 1), dtype = int)
            np.put(arr, [line], [1])
            np.savetxt(f, arr, fmt='%i')
f.close()

1 Ответ

0 голосов
/ 06 февраля 2019

Вы можете попробовать этот код, который добавляет заданный массив (n,1) в виде столбца к текстовому файлу, содержащему матрицу целых чисел (n,m):

def appendAsColumn(arr):
    fileContent = np.loadtxt('outfile.txt', dtype = int, ndmin = 2)
    fileContent = np.hstack((fileContent, arr.astype(int)))
    np.savetxt('outfile.txt', fileContent, fmt='%i')

Обратите внимание, что это не будет работатьдля самой первой записи файла вам нужно будет вызвать

np.savetxt('outfile.txt', arr, fmt='%i')

для первого столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...