2017-01-22 36 views
0

私はニューラルネットワークを学習しており、いくつかのプロセスを自動化しようとしています。 今、データセットをランダムに284807x31個に分割するコードがあります。次に、入力と出力を分離する必要があります。つまり、最後の列まで配列全体を選択し、最後の列のみを選択する必要があります。何らかの理由で私はこれを正しく行う方法を理解することができず、上記で説明したようにセットを分割して分離することに固執しています。ここに私のコードは(この特定の問題を指し部分)これまでです:NumPy - 配列を整形するための列と行番号の取得

train, test, cv = np.vsplit(data[np.random.permutation(data.shape[0])], (6,8)) 

# Should select entire array except the last column 
train_inputs = np.resize(train, len(train[:,1]), -1) 
test_inputs = np.resize(test, len(test[:,1]), -1) 
cv_inputs = np.resize(cv, len(cv[:,1]), -1) 

# Should select **only** the last column. 
train_outs = train[:, 30] 
test_outs = test[:, 30] 
cv_outs = test[:, 30] 

アイデアは、私は、対応するデータセットの列番号を見つけて、意図したサイズ変更を行うには、マシンが欲しいということです。 2番目の部分では最後の列のみが選択されますが、その前にスクリプトが停止するため、スクリプトが機能するかどうかわかりません。エラーは仕方によって、次のとおりです。

Traceback (most recent call last): 
    File "src/model.py", line 43, in <module> 
    train_inputs = np.resize(train, len(train[:,1]), -1) 
TypeError: resize() takes exactly 2 arguments (3 given) 

PS:今、私はドキュメントを探していますことは、私は、溶液から非常に遠いですが、私は本当にそれを把握することはできません見ることができます。 NumPyを使用しているのは初めてです。

ありがとうございます。

+0

'np.resize'はめったに使用されない関数です。 'reshape'はもっと便利です(http://stackoverflow.com/questions/41795638/collapsing-all-dimensions-of-numpy-array-the-first-twoのように)。答えに示されているようにインデックススライスは非常に一般的です。おそらくあなたは 'VBA'や他の言語で' resize'を使うのに慣れているかもしれません。 – hpaulj

+0

私は参照してください。ありがとう!私はどの言語にも慣れていない。新しいスキルを習得しようとしている男、私が行くにつれて問題を探しています。私はその問題の解決策を見つけましたが、明らかに良い解決策ではありませんでした:) –

答えて

2

いくつかのスライスを助ける必要があります。

を最後の列

train_inputs = train[:,:-1] 
test_inputs = test[:,:-1] 
cv_inputs = cv[:,:-1] 

とを除いて、配列全体を選択する必要があります:だけ最後の列を選択する必要があり

train_outs = train[:,-1] 
test_outs = test[:, -1] 
cv_outs = test[:, -1] 
+0

私はこの問題を解決したと思います。別の問題が発生していますが、それはコードの他の部分と関連しています。ありがとう! –

関連する問題