Python ist eine sehr praktische Sprache zum Analysieren numerischer Daten. Der erste Schritt beim Analysieren von Daten besteht jedoch darin, die Daten zu laden. Daher werden wir zusammenfassen, wie numerische Daten in verschiedenen Formaten in Form eines Numpy-Arrays gelesen werden.
Im Folgenden wird in allen Fällen der Inhalt der Datei in Daten gespeichert.
filename.csv
year,Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
2001,-0.4,-0.3,-0.2,-0.1,0,0,-0.1,-0.2,-0.3,-0.4,-0.5,-0.4
2002,-0.3,-0.1,0,0.3,0.4,0.5,0.6,0.7,0.8,1,1,1
2003,0.8,0.5,0,-0.2,-0.2,-0.2,-0.1,0.1,0.3,0.4,0.4,0.4
2004,0.4,0.3,0.1,0,-0.1,0,0,0.2,0.3,0.4,0.4,0.3
2005,0.2,0.1,0.1,0.1,0.2,0.3,0.2,0.1,-0.2,-0.5,-0.7,-0.8
2006,-0.8,-0.7,-0.5,-0.3,-0.2,0.1,0.3,0.4,0.6,0.8,0.9,0.8
2007,0.5,0.2,-0.2,-0.5,-0.6,-0.7,-0.9,-1.1,-1.3,-1.4,-1.5,-1.5
2008,-1.4,-1.1,-0.8,-0.5,-0.1,0.1,0.2,0.2,0.2,0,-0.2,-0.4
2009,-0.5,-0.5,-0.3,0,0.3,0.5,0.7,0.8,0.9,1,1,1.1
2010,1.1,0.9,0.7,0.3,0,-0.4,-0.8,-1.1,-1.3,-1.4,-1.5,-1.4
2011,-1.2,-0.9,-0.7,-0.4,-0.2,-0.2,-0.2,-0.4,-0.6,-0.8,-0.8,-0.7
2012,-0.6,-0.3,-0.1,0.1,0.3,0.4,0.5,0.5,0.4,0.2,0,-0.2
2013,-0.2,-0.3,-0.4,-0.4,-0.5,-0.6,-0.6,-0.5,-0.3,-0.2,-0.1,-0.2
2014,-0.2,-0.1,0,0.2,0.4,0.5,0.5,0.5,0.6,0.7,0.7,0.6
2015,0.5,0.5,0.6,0.8,1.2,99.9,99.9,99.9,99.9,99.9,99.9,99.9
Lesen Sie die oben angezeigten Textdaten, wenn Sie sie im Editor öffnen.
import numpy as np
data = np.loadtxt('filename.csv', comments='year', delimiter=',', dtype='float')
import netCDF4
nc = netCDF4.Dataset('filename.nc', 'r')
data = nc.variables['varname'][:]
write_binary_2D.f90
program main
implicit none
integer,parameter::N=10,M=20
integer::i,j
real,dimension(1:N,1:M)::x
open(10,file='filename.out',form='unformatted',access='direct',recl=N*4)
do i = 1,N
do j = 1,M
x(i,j) = i+j*2
end do
end do
do j = 1,M
write(10,rec=j)(x(i,j),i=1,N)
end do
close(10)
end program main
Lesen wir den Inhalt von filename.out (eine 4-Byte-Gleitkomma-Binärdatei ohne einen kleinen tolandischen Header, allgemein als GrADS-Format bezeichnet), der mit dem obigen Programm erstellt wurde.
import numpy as np
N = 10 #Die Anzahl der pro Datensatznummer gespeicherten Daten.
M = 20 #Gesamtzahl der Datensätze.
f = open('filename.out', 'r')
dty = np.dtype([('data', '<' + str(N) + 'f')])
chunk = np.fromfile(f, dtype=dty, count=M)
data = np.array([chunk[j]['data'] for j in range(M)])
data = []
for j in range(M):
data.append(chunk[j]['data'])
data = np.array(data)
Wird in einer Zeile umgeschrieben.
--chunk [k-1] entspricht den Daten der Datensatznummer k in fortran. Wenn Sie beispielsweise nur die Daten mit Datensatznummer 6 abrufen möchten, setzen Sie die letzte Zeile
data = chunk[5]['data']
Sie können es durch ersetzen.
Recommended Posts