2017-04-19 1 views
0

Ich bin ziemlich neu in Python und habe ein kleines, aber (was scheint) ein sehr schwieriges Problem.Extrahieren von Zeilen/Spalten von Zahlen aus einer TXT-Datei in Python

ich eine txt-Datei, die die folgendes enthält:

-2  2.1  -0.365635756 
0  2.4  0.347433737 
2  2.5  0.263774619 
4  3.5  -0.244930974 
6  4.2  -0.004564913 

Mein Ziel ist es irgendwie getrennte Zeilen/Spalten aus der Datei in Python zu extrahieren als Listen oder Arrays (wieder zu verwenden, ich bin ziemlich neu zu diesem). Also zum Beispiel, wie würde ich die Liste [-2, 0, 2, 4, 6] mit den Daten aus der ersten Spalte machen?

Im Moment habe ich den folgenden Code in meiner Arbeit:

import numpy as np 

with open('Numbers.txt', 'r') as f: 
    fcontents = f.read() 
    print(fcontents) 

x = np.array(fcontents) 

Das Ziel dieser ist es, ein Programm zu schreiben, die Arrays verwendet verschiedene Variablen in unserem Projekt Anweisungen gegeben zu berechnen.

Vielen Dank im Voraus für jede Hilfe,

Luke.

+0

Verwenden Sie das Leerzeichen als Trennzeichen in jeder Zeile der Textdatei –

+0

Mögliches Duplikat [Wie eine Textdatei in eine Liste in Python konvertieren] (http://stackoverflow.com/questions/8205807/how-to-convert-a-text-file-into-a-list-in-python) – Barney

Antwort

0

Ich habe numpy nicht verwendet, aber wenn Sie in die Spalten trennen möchten, können Sie diese Art der Sache tun

col1 = [] 
col2 = [] 
col3 = [] 

with open('Numbers.txt', 'r') as f: 
    for line in f: 
     first, second, third = line.split() 
     col1.append(first) 
     col2.append(second) 
     col3.append(third) 

print(col1) 
print(col2) 
print(col3) 

die

['-2', '0', '2', '4', '6'] 
['2.1', '2.4', '2.5', '3.5', '4.2'] 
['-0.365635756', '0.347433737', '0.263774619', '-0.244930974', '-0.004564913'] 
+0

Das ist perfekt, danke Mann! –

1

gibt das ein Job für pandas sein könnte:

import pandas as pd 

df = pd.read_fwf('Numbers.txt', header=None) 
first_col = df[0] 

assert first_col.mean() == 2 
assert first_col.median() == 2 
assert sum(first_col) == 10 

Referenzen:

+0

Yay! Pandas Regeln! Aber für dieses spezielle Dateiformat würde ich [pd.read_fwf()] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_fwf.html) verwenden. – MaxU

+1

@MaxU - Einverstanden. Vielen Dank! –

0

Sie können Ihre Daten als numpy.array

import numpy as np 

data = np.genfromtxt('Numbers.txt', unpack=True).T 

Dann importieren, Spalten/Zeilen abzurufen ist so einfach wie die Indizierung/Schneiden eines numpy.array

print(data[1,:]) 
print(data[:,1]) 

dies führt zu

[ 0.   2.4   0.34743374] 
[ 2.1 2.4 2.5 3.5 4.2] 
Verwandte Themen