2017-02-09 13 views
0

私は一般的にコーディングするのが初めてで、データの一部を切り抜くのに問題があります。これは単純なテキストファイルであり、これまでファイルの大きな文字列を1つのリストにまとめてリスト内の個々の値に分割していました(index [0] = -78.5など)。前記リストの最初の2つのインデックスはそれぞれ緯度と経度であり、次の240は値(分析したいデータ)である。そこから、次の2つの値は再び緯度と経度です。つまり、インデックス[242]と[243]はそれぞれ緯度と経度です。Python - スライスからリスト内に複数のリストを作成する

私がしたいことは、最初の242インデックス(lat、lon、240個の個別値)を取り出し、それらをリストに入れて「マスター」に入れることです。ネストされたリストを作成します。私はリストの終わりに達するまでこれをしたい、つまり私は242のステップを持っていたいと思っている(私は思う?)。最終結果は、次のようなものになります。

master_list = [] ... [緯度、経度、240個の値...]、[緯度、経度、240個の値を、...]

私が必要これは私が座標に基づいてこのデータを切り取るので、私は個々の緯度と経度に個別にアクセスしながら、それらの値をそのリストに関連付けたままにします。

f = open('file.txt', 'r') 
file_contents = f.read() 
f.close() 

single_obs = file_contents.split(" ") 
new_list = [] 
blank_value = single_obs[0] 

def remove_blankspace(my_list): 
    for i in my_list: 
     if i != blank_value: 
      new_list.append(i) 
    return new_list 
remove_blankspace(single_obs) 

print new_list[0] 

これは基本的にはちょうど私は、ファイルから空白を削除し、リスト内の個々の要素に文字列を作っている:

はこれまでのところ、私はこれ持っています。 'new_list'にはたくさんの要素があります!

私はテストとしてこれを試してみましたが、私は遠く離れていた、と私は自分のコンピュータを再起動する必要がありましたので、私は無限ループを作成したと思う:

indiv_values = [] 

for value in new_list: 
    line = new_list[::239] 
    indiv_values.append(line) 

print indiv_values[0] 

各以来、私は以前、行ごとにそれを分割しようとしましたlineにはlat、lon、および240の値が含まれています。私は各行を含むリストを作成することができましたが、各行のすべての値を個々の要素に分けることはできません。

申し訳ありません申し訳ありませんが、これはひどい説明か、私が達成しようとしていることがわかりません(コーディングに新しい!)が、不明な点があれば尋ねてください!

lat1, lon1, values... 
lat2, lon2, values... 
... 

そして、あなたはあなたが行うことができるはず記述したものから:

+1

私はこれを示唆していることは誇りに思っていますが、あなたのデータはサードパーティのnumpyライブラリy。ちなみに、2次元配列へのスライスは完全に自然で効率的です。あなたはnumpy配列を見てみることを考慮する必要があります。データ型のものには非常に適しています(長方形のネストされたリストを持つ限り)。 –

+0

@AndrasDeak:サイト外の参考資料を求める*ポスターを探すのはすごいですが、それを解決策として提供するのは間違いありません。私は投票した。 – Prune

+0

@Pruneありがとう:)正当な理由があまりにも頻繁に提案されているので、それはほとんど嫌になっています。また、適切な組み込みツールがある場合には、高価なサードパーティのライブラリです。他の人が書いているように、「numpyはpythonの[jquery](http://meta.stackexchange.com/a/19492/313143)です。 –

答えて

0

は、ファイルがどのように見えると仮定すると

with open("file.txt", "r") as fobj: 
    file_contents = fobj.read() 

llv = list() 
for line in file_contents.strip("\n").split("\n"): 
    data = line.split(" ") 
    # process however you want 
    llv.append([data[0], data[1], data[2:]) 

これはあなたに以下のようなリスト(LLV)を提供します:

[[lat1, lon1, [values...]], [lat2, lon2, [values2...]], ...] 
+0

ありがとうございます。私はそれぞれの緯度と経度と同じリストに値を持つリストにしたいと思います。 [[lat1、lon1、values、values、...]、[lat2、lon2、values2、values2、...]、...] ファイルもカンマ区切りです。空白で区切られています。ご協力いただきありがとうございます! –

関連する問題