Как добавить массив в текстовый файл в Python - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь создать файл с несколькими строками в качестве заголовка и добавить столбец чисел.У меня возникли проблемы с добавлением numpy.matrix после заголовка.Я написал код, как показано ниже enter image description here

import numpy as np
import pandas as pd
import xlrd

df = pd.read_csv('Region_SGeMS.csv', header=None)

matrix = np.asmatrix(df)

#print(matrix)

s = np.shape(matrix)
print(s)
row = s[0]
col = s[1]

a = np.flip(matrix, 0)

b = np.reshape(a, (400, 1))

print(b)

f = open('Region.txt', 'w')

f.write(str(s[0]))
f.write(' ')
f.write(str(s[1]))
f.write(' 1 \n')
f.write('1 \n')
f.write('facies \n')

with open('Region.txt', 'a+') as outfile:
    np.savetxt(outfile,b) 

Однако выделенное число должно быть 2, а не 0. Я также приложил скриншот моего исходного файла Excel. Вот скриншот моего результата

Ответы [ 2 ]

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

Обратите внимание, что numpy.savetxt добавит строку заголовка в файл для вас, если вы позволите.Например:

import numpy as np
# Recreate the original csv data
one_block = np.ones((10,10))
A   = np.block([ [0*one_block,one_block],[2*one_block,3*one_block] ])
M,N = A.shape
# Recreate b
a   = np.flip(A,0)
b   = a.reshape(400,1)
hdr_str = """{M:d} {N:d} 1
1
facies""".format(M=M,N=N)
outfile = 'Region.txt'
np.savetxt(outfile,b,header=hdr_str,comments='')

Ниже приведен скриншот моей попытки воссоздать вашу проблему.Там нет поддельных 0.

enter image description here

0 голосов
/ 21 февраля 2019
f = open('Region.txt', 'w')
f.write('first line \n')
f.write('second line \n')
f.close()

with open('Region.txt', 'a+') as outfile:
    np.savetxt(outfile,np.random.rand(10,3)) 
...