Import von Messdaten in NumPy Arrays

Jens Wagner 06/2015

Download this notebook
Download brown2.dat

In [1]:
import numpy as np

Einlesen von Daten mit genfromtxt()

In [2]:
np.genfromtxt('data/brown2.dat')  #Hier der Pfad zu Euren Daten eintragen
Out[2]:
array([[    nan,     nan,     nan,     nan],
       [  1.   ,   2.   ,  48.646,  60.636],
       [  2.   ,   3.   ,  48.921,  62.104],
       [  3.   ,   4.   ,  48.096,  62.104],
       [  4.   ,   5.   ,  47.086,  62.746],
       [  5.   ,   6.   ,  49.013,  63.021],
       [  6.   ,   7.   ,  50.298,  62.838],
       [  7.   ,   8.   ,  51.215,  62.654],
       [  8.   ,   9.   ,  50.389,  61.645],
       [  9.   ,  10.   ,  50.389,  60.544],
       [ 10.   ,  11.   ,  48.279,  60.361]])

Die erste Zeile wurde nicht als Zahl erkannt (nan=not a number). Wir lesen die Daten mit dtype='str' als String ein.

In [3]:
np.genfromtxt('data/brown2.dat',dtype='str') 
Out[3]:
array([['Nummer', 'Zeit[s]', 'x[e-6m]', 'y[e-6m]'],
       ['1', '2', '48.646', '60.636'],
       ['2', '3', '48.921', '62.104'],
       ['3', '4', '48.096', '62.104'],
       ['4', '5', '47.086', '62.746'],
       ['5', '6', '49.013', '63.021'],
       ['6', '7', '50.298', '62.838'],
       ['7', '8', '51.215', '62.654'],
       ['8', '9', '50.389', '61.645'],
       ['9', '10', '50.389', '60.544'],
       ['10', '11', '48.279', '60.361']], 
      dtype='<U7')

Die erste Zeile (Header) wird mit skip_header=1 übersprungen

In [4]:
np.genfromtxt('data/brown2.dat',skip_header=1) 
Out[4]:
array([[  1.   ,   2.   ,  48.646,  60.636],
       [  2.   ,   3.   ,  48.921,  62.104],
       [  3.   ,   4.   ,  48.096,  62.104],
       [  4.   ,   5.   ,  47.086,  62.746],
       [  5.   ,   6.   ,  49.013,  63.021],
       [  6.   ,   7.   ,  50.298,  62.838],
       [  7.   ,   8.   ,  51.215,  62.654],
       [  8.   ,   9.   ,  50.389,  61.645],
       [  9.   ,  10.   ,  50.389,  60.544],
       [ 10.   ,  11.   ,  48.279,  60.361]])

Spalten in Arrays einlesen mit usecols

In [5]:
spalte1=np.genfromtxt('data/brown2.dat',skip_header=1,usecols=(0))
spalte2=np.genfromtxt('data/brown2.dat',skip_header=1,usecols=(1))
spalte3=np.genfromtxt('data/brown2.dat',skip_header=1,usecols=(2))
spalte4=np.genfromtxt('data/brown2.dat',skip_header=1,usecols=(3))
#Die 3. Spalte:
print(spalte3)
[ 48.646  48.921  48.096  47.086  49.013  50.298  51.215  50.389  50.389
  48.279]

Spalten in Arrays einlesen durch Slicing

In [6]:
#Die 3. Spalte:
spalte3=np.genfromtxt('data/brown2.dat',skip_header=1)[:,2:3]
print(spalte3)
[[ 48.646]
 [ 48.921]
 [ 48.096]
 [ 47.086]
 [ 49.013]
 [ 50.298]
 [ 51.215]
 [ 50.389]
 [ 50.389]
 [ 48.279]]

Die erste Zeile:

In [7]:
zeile1=np.genfromtxt('data/brown2.dat',skip_header=1)[0:1]
print(zeile1)
[[  1.      2.     48.646  60.636]]