私はすでにPython 2.7を使用していましたが、最近Python 3に切り替えました。私はすでにいくつかの点でコードを更新していますが、私を欺く。私がしようとしているのは、np.loadtxtを使ってデータセットをロードすることです。このデータにも文字列が含まれているため、完全な配列を文字列としてインポートしています。いくつかのエントリをfloatに変換するために型変換をしたいと思います。これは悲惨に失敗し、なぜ私は理解できません。私が見ているのは、Python 3ではすべての文字列に接頭辞「b」が付いていることです。これには何かがあると感じていますが、簡潔な答えは見つかりません。以下のコードとエラー。Python 3のnumpy配列で文字列データ型をfloatに変換する方法
filename = 'train.csv'
raw_data = open(filename, 'rb')
data = np.loadtxt(raw_data, delimiter=",", dtype = 'str')
dataset = data[1:,1:]
print(dataset)
original_data = dataset
test = float(dataset[0,0])
print(test)
結果
[["b'60'" "b'RL'" "b'65'" ..., "b'WD'" "b'Normal'" "b'208500'"]
["b'20'" "b'RL'" "b'80'" ..., "b'WD'" "b'Normal'" "b'181500'"]
["b'60'" "b'RL'" "b'68'" ..., "b'WD'" "b'Normal'" "b'223500'"]
...,
["b'70'" "b'RL'" "b'66'" ..., "b'WD'" "b'Normal'" "b'266500'"]
["b'20'" "b'RL'" "b'68'" ..., "b'WD'" "b'Normal'" "b'142125'"]
["b'20'" "b'RL'" "b'75'" ..., "b'WD'" "b'Normal'" "b'147500'"]]
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-38-c154945cd6f1> in <module>()
5 print(dataset)
6 original_data = dataset
----> 7 test = float(dataset[0,0])
8 print(test)
ValueError: could not convert string to float: "b'60'"
こんにちはセムは、おそらく最初の場所でファイルを開く必要はありませんが、loadtxtにファイル名を渡すことができます。また、データを解析するためにより強力なnumpy.genfromtxtを試してみることもできます。それ以外にも、データファイルからサンプルラインを提供できますか? – dnalow
こんにちはdnalow、genfromtxtを使用すると、すでに修正されています。ご意見ありがとうございます!以下の回答を投稿します。種類については、Sem –