2017-01-15 19 views
0

[:, :5]コードの部分が次のコードセグメントで何をするのかを明確にすることはできますか?Pythonの添字構文の説明

for i in range(5): 
     weights = None 
     test_inputs = testset[i][:, :5] 
     test_inputs = test_inputs.astype(np.float32) 
     test_answer = testset[i][:, :5] 
     test_answer = code_answer(test_answer) 
+3

これは通常のPython構文ではありませんが、Numpy構文です。 –

答えて

0

これはマニュアルのnumpy indexing guideで説明されています。これは標準のPython構文ではありません。

アレイがある場合aa[:]はアレイ全体でビュー(コピーではなく、これにより割り当てられます)を返します(a)。 a[:5]要素の表示0, 1, ..., 4

numpyは、純粋なpythonバージョンa[i][j]ではなく、a[i, j]でより多くの次元の配列をインデックスできます。

これはすべてのケースをカバーする必要があります。

0

このコードはおそらくnumpy配列を使用します。

Numpyは、Matlabスタイルに似た、より精巧な配列スライスを定義しています。

[:, :5]があなたの配列から(おそらく2次元配列は、tester[i]から返された)あなたはすべての行(:で指定された)を取ると、それはしかし、列5

含めないまで最初から列を取ることを意味しスライシング式の各部分は、通常のPythonスライス構文に従います。

[:, :5]自体は実際には[(:, :5)]のように解釈されます。これは、Pythonでは括弧のないカンマ区切りの値がタプルとして解釈されるためです。

アレイオブジェクトは、複雑なスライスパターンを表すタプルを処理できます。

これは簡単にこの構文の意味です。

詳細については、numpyのページをご覧ください.www.scipy.orgからアクセスできます。

0

他の人が述べたように、参照される配列は numpyのパッケージからである(それは家庭pageだ参照)

例が役立つはずです。

from numpy import * 
a=arange(36).reshape(6,6) 
b=a.reshape(6,3,2).swapaxes(0,2) 
print b 

[[[0 6 12 18 24 30] 
    [2 8 14 20 26 32] 
    [4 10 16 22 28 34]] 
[[1 7 13 19 25 31] 
    [3 9 15 21 27 33] 
    [5 11 17 23 29 35]]] 

:最初の提供されたコードを操作しているものと同様の多次元アレイ構造を作成し、[:、:5]構文は、第五を超えるすべて 成分アレイエントリをに選び出す配列スライシング機構である:

print b[1][:,:5] 

[[1 7 13 19 25] 
[3 9 15 21 27] 
[5 11 17 23 29]] 
+0

あなたは質問に答えていません。出力を表示するだけでは、出力*が何を意味するのか、またはオペレータが何をしているのか説明できません。 –

+0

申し訳ありませんが、コードはわかりやすいと思いました。 – Amorpheuses