2

Pythonで文字列値を配列に入れるのに苦労しています。約 30k エントリの長さのファイルがあり、各行は次のようになります。

0R1,Sn=0.3M,Sm=0.7M,Sx=1.5M

0R1 の部分は必要ありません。必要なのは、すべての Sn 値を 1 つの配列に、Sm 値を別の配列に、Sx を別の配列に入れることだけです (もちろん、文字列から数値を取得する方法はまだわかりませんが、それは後で考えます)。今、私は文字列の配列を作ろうとしていると思います。

これが私のコードです:

fname = '\\pathname...\\WXT51003.txt'
f1 = open(fname, 'r')

import csv
import numpy
from numpy import zeros
reader = csv.reader(f1)
Max = zeros((29697,1), dtype = numpy.str)
Mean = zeros((29697,1), dtype = numpy.str)
Min = zeros((29697,1), dtype = numpy.str)
for i, row in enumerate(reader):
    Min[i] = row[1]
    Mean[i] = row[2]
    Max[i] = row[3]

f1.close()
print Min[0:10]

print ステートメントの出力は、すべての行に「S」がある配列です。最初の文字だけでなく、文字列全体を読み取るにはどうすればよいですか?

4

1 に答える 1

3
reader = csv.reader(f1)
rows = list(reader)
cols = zip(*rows)
Min = cols[1]
Mean = cols[2]
Max = cols[3]


# or if you really want numpy.arrays
Min = numpy.array(cols[1]) #dtype will be auto-assigned
Mean = numpy.array(cols[2]) #dtype will be auto-assigned
Max = numpy.array(cols[3]) #dtype will be auto-assigned

私はそれを行う方法です...(これにはnumpyを使用しないでください...少なくともまだ)

numpyを使用する必要がある場合は、「S8」のdtypeを使用するか、文字列が必要な大きさ...またはdtype.objectなどを使用します...デフォルトでは、len1文字列型になります...しかし、実際には私はコードスニペットに基づいて、ここでnumpyを使用する理由はありません

于 2013-07-18T21:08:20.807 に答える