1

まず、私は非常に弱いプログラマーであり、Python とこのサイトは初めてです。私の間違いで申し訳ありません。だからここに行きます、私のデータファイルは次のようになります:

http://pastebin.com/60E84azv

貼り付けビン ファイルには合計 6221 行あります。テストのために、行数を最大 1000 に制限しました。

メイン列が 1 と 2 である数行の float 値を読み込もうとしています。

これまでのところ、ファイルから必要な行を抽出するために次のコードを作成しました。

f = open('Sample Data.txt',"r")

num=0
line = f.readlines()

for n in range (107, 1000, 1):  #6621

    if (n>108):
    print line[n]

これはかなりうまく機能し、各行の数字を文字列として出力します。(各数字には 4 つのスペースがあり、次の数字と区切られています。ただし、各列の最初の数字には 2 つのスペースがあります。)

文字列を配列またはリストに変換して、個々の数値を操作し、最終的に y 軸に列 2 を使用してグラフをプロットできるようにしたいと考えています。文字列を分割して浮動小数点数に変換するために、次のように記述しました。

for i in range(108,1000,1):
line[i].split('    ')
float(line[i]) = X[i]
print(X[i])

これを実行すると、次のエラーが返されます。

Traceback (most recent call last):
  File "<pyshell#25>", line 2, in <module>
print(X[i])
NameError: name 'X' is not defined

私はそれを分解しました、そして line[i].split(' ') は一種の仕事のように見えます.

['  5070.74537037   -0.003382', '0.009507\n']

このエラーが発生する理由がわかりません。X[i] は、フロートを使用して作成することになっていた新しい配列だと思っていましたが、何らかの理由で機能したくないようです。大規模なデータセットを使用する場合は多次元配列を使用するのが良いとどこかで読んだことがあります... 1つの次元さえ理解できない場合、他の次元を理解するチャンスはありません!

潜在的なグラフの x 列または y 列を個別に操作できるようにする配列または 2 つの 1 次元配列を作成する方法はありますか?

お時間をいただきありがとうございます!

4

3 に答える 3

1

splitこれは、各行に引数を指定せずに使用すると、よりエレガントに処理できます。

f = open('Sample Data.txt',"r")
num = 0
for line_number, line in enumerate(f):
    if (line_number < 109):
        #jump over lines at the beginning
        continue
    # now split the line everywhere there are one or more whitespaces:
    numbers_as_strings = line.split()
    # and convert the numbers to floats
    numbers = list(map(float, numbers_as_strings))
于 2013-11-02T17:31:00.527 に答える
0

for ループで呼び出す前に x を宣言していません。for ループ内で宣言すると、ループが通過するたびに初期値で再開されます。これを試して。

x = []
for i in range(108,1000,1):
line[i].split(' ')
x.append(float(line[i]))
print(x[i])

于 2013-10-31T21:36:24.450 に答える