2016-08-15 6 views
1

データをホットエンコードしようとしていました。Pythonのリストとナンシー配列

AttributeError: 'NoneType' object has no attribute 'astype' 

inputs = [] 
for i in range(vocabulary_size): 
    inputs.append(np.arange(num_labels) == data[i]).astype(np.float32) 

は私にエラーを例外: データはホットエンコードするために17005207.

= vocabulary_sizeのリストですが、私は次のコードnum_labels = 100 の入力のリストを作りました

追加機能の中でdtype = np.float32を試しましたが、もう一度間違っていました。
は、私はこれをしようとすると:vocabulary_sizeのXのnum_labelsのホットエンコードされた入力シーケンス:

inputs = [] 
for i in range(vocabulary_size): 
    inputs.append(np.arange(num_labels) == data[i]) 
inputs = np.array(inputs,dtype=np.float32) 

が、私は正しい答えを得ます。

Numpyを使用しないで1行の代替ソリューションがありますか?

解決済み:リスト(データ)でnumpy配列(入力)を使用して直接行うことはできますか?データに関する

情報:データ= np.ndarray(LEN(ワード)、DTYPE = np.int32)

再フォーマット機能:

def reformat(data): 
     num_labels = vocabulary_size 
     print (type(data)) 
     data = (np.arange(num_labels) == data[:,None]).astype(np.int32) 
     return data 
     print (data,len(data)) 
     return data 

新しい質問:データの次元があります(vocabulary_size、)... ravelやreshapeを使ってデータを(1、vocabulary_size)の次元に変換する方法は?

+0

あなたの誤差が来ますあなたが 'inputs.append()'呼び出しによって**返されたもの**から 'astype'属性を取得しようとしていることから、それはNoneオブジェクトです。つまり、明らかに動作しないNone.astype()を呼び出そうとします。 – jadsq

+0

落ち着いてください。 3回の編集をすばやく行うと、1秒ごとに変更されるため、質問に答えることができません。ラヴェルや改造があなたを助けることができると分かっているようです:あなたは 'numpy.reshape'の文書を読もうとしましたか? – YuppieNetworking

+0

Sry @YuppieNetworkingもしそれがあまりにも大きかったら。明確にしたいと思っていました。私は文書を読んでいました。 – SupposeXYZ

答えて

0

ないあなたはすでに働いている私はあなたが求めているものを正確に理解しましたが、何がしたいことはonelinerであれば、あなたは変換することができるかどうかを確認してください。この中にコード:

inputs = np.array([np.arange(num_labels) == data[i] for i in range(vocabulary_size)], dtype=np.float32) 
+0

だから、他の選択肢はありませんが、データを列挙型に変換する必要があります。 – SupposeXYZ

関連する問題