У меня есть много файлов .mat, которые содержат информацию о радиальной части некоторых различных волновых функций и некоторой другой информации об атоме. Теперь я успешно извлек часть волновой функции и использовал numpy.savetxt(), чтобы сохранить ее в .txt-файл. Но размер файла увеличивается так: После того как я побежалРазмер файла увеличивается после преобразования из файлов .mat в файлы .txt
du -ch wfkt_X_rb87_n=40_L=11_J=0_step=0.001.mat
440K wfkt_X_rb87_n=40_L=11_J=0_step=0.001.mat
du -ch wfkt_X_rb87_n=40_L=12_J=0_step=0.001.txt
2,9M wfkt_X_rb87_n=40_L=12_J=0_step=0.001.txt
Игнорируйте L = 11 и L = 12 разница, размер волновых функций почти одинаковы, но размер файла увеличился более чем 6 раз. Я хочу знать причину и, возможно, способ уменьшить размер .txt-файлов. Вот код, как я тайные файлы:
import scipy.io as sio
import os
import pickle
import numpy as np
import glob as gb
files=gb.glob('wfkt_X_rb*.mat')
for filet in files:
print filet
mat=sio.loadmat(filet)
wave=mat['wavefunction'][0]
J=mat['J']
L=mat['L']
n=mat['n']
xmax=mat['xmax'][0][0]
xmin=mat['xmin'][0][0]
xstep=mat['xstep'][0][0]
energy=mat['energy'][0][0]
name=filet.replace('.mat','.txt')
name=name.replace('rb','Rb')
x=np.linspace(xmin, xmax, num=len(wave), endpoint=False)
Data=np.transpose([x,wave])
np.savetxt(name,Data)
os.remove(filet)
with open(name, "a") as f:
f.write(str(energy)+" "+str(xstep)+"\n")
f.write(str(xmin)+" "+str(xmax))
и формат файл данных, необходимого это:
2.700000000000000000e+01 6.226655250941872093e-04
2.700099997457605738e+01 6.232789496263042460e-04
2.700199994915211121e+01 6.238928333406641843e-04
2.700299992372816860e+01 6.245071764542571872e-04
2.700399989830422243e+01 6.251219791839867897e-04
2.700499987288027981e+01 6.257372417466700075e-04
2.700599984745633364e+01 6.263529643590372287e-04
Если вам нужна дополнительная информация, не стесняйтесь спрашивать! Заранее спасибо.
В зависимости от того, как вы их сохранили, может быть просто изменение типа данных. Можете ли вы добавить код, используемый для чтения/сохранения? – Benjamin
mat-Files являются двоичными и сжатыми, а файлы txt - ohm, text, поэтому коэффициент 3-6 вполне нормальный. Если размер имеет значение, используйте двоичный формат, например .mat. – Daniel
Этого можно ожидать. Текстовые файлы преобразуют числа, представленные в двоичном виде в символы.Тривиальный упрощенный пример: номер 2 может быть представлен двумя битами '10' в двоичном формате, символ« 2 »- шестнадцатеричный. 32, это восемь двоичных бит (в ASCII), поэтому в 4 раза больше (в Unicode это будет 16 бит). Одним из способов сокращения является zip (сжатие) txt-файла - для этого доступно несколько модулей python, но вам нужно распаковать его для использования. Уменьшение размера зависит от данных. – cdarke