3

このコードは、2列のデータを読み取り、最初の列を最初のnumpy配列に出力し、次に2番目の列を2番目のnumpy配列に出力するように設定されています。

def read2coldata(filename):

    import numpy
    b = []
    f = open(filename,"r")
    lines = f.readlines()
    f.close()
    for line in lines:
        a = line.split()
        for i in a:
            b.append(i)
    return (numpy.array(b[::2]),numpy.array(b[1::2]))

ただし、これにより次のことが可能になります。

(array(['1.5', '8', '16', '17'], dtype='|S3'), array(['4', '5', '6', '6.2'], dtype='|S3'))

dtype="|S3"そのままにしておくパーツを取り除くにはどうすればよいですか?

(array(["1.5","8","16","17"], array(["4","5","6","6.2"])
4

1 に答える 1

5

dtype="S3"あなたは「立ち去りたくない」のです。numpy配列を出力すると、その中のデータのタイプがわかります。これはデータの一部ではなく、データがどのように保存され、プログラムによって理解されるかについての情報です。

あなたの特定の例では、あなたは数を読んでいるので、おそらく後で計算などでそれらを使用したいと思うでしょう。その場合、データを数として理解したいと思うでしょう(あなたの場合は浮動小数点数)。

dtype="S3"今のところ、それらは文字列として保存されているので、本質的にサイズ3以下の文字列タイプを意味することがわかります。(ちゃんと覚えたら)

私はあなたにあなたの関数の代わりを提案します:numpy.genfromtxttxtファイルからnumpy配列にデータをロードする関数です。

ドキュメントは非常に優れており、パラメータを理解するために20分を費やすと非常に役立ちます。

array1 = numpy.genfromtxt('path_to_my_file.txt', usecols=0)
array2 = numpy.genfromtxt('path_to_my_file.txt', usecols=1)

これで始められるはずです。

于 2012-12-08T02:25:41.617 に答える