2016-11-13 3 views
5

numpyのsliding-windowの例を使用して作業しています。 Noneの効果は配列を転置するように思わ,None numpyインデックススライスなし

start_idx = np.arange(B[0])[:,None]
foo = np.arange(10) 
print foo 
print foo[:] 
print foo[:,] 
print foo[:,None] 

を理解しようとしていました。

[0 1 2 3 4 5 6 7 8 9] 
[0 1 2 3 4 5 6 7 8 9] 
[0 1 2 3 4 5 6 7 8 9] 
[[0] 
[1] 
[2] 
[3] 
[4] 
[5] 
[6] 
[7] 
[8] 
[9]] 

しかし、私は完全にはわかりません。私は第2パラメータ(None)が何をするかを説明する文書を見つけることができませんでした。それはGoogleにとっても難しい部分です。 numpy array docs makes me think it has something to do with advanced indexingですが、私は十分ではありません。

+1

を印刷する場合には[ 'np.newaxis'](HTTPSのエイリアスとして使われているとする寸法に注意してください://docs.scipy。org/doc/numpy/reference/arrays.indexing.html#numpy.newaxis)ここでは、シングルトンディメンション(長さ= 1のディム)を追加するために使用されます。サンプルの場合、入力1D配列を「2D」に変換するために追加され、2番目のdimはシングルトンです。 – Divakar

答えて

11

foo[:, None]は、1次元配列fooを2番目の次元に拡張します。実際には、numpyはこれを行うには別名np.newaxisを使用します。

foo

foo = np.array([1, 2]) 
print(foo) 

[1 2] 

一次元アレイは制限があり考えます。たとえば、転置は何ですか?

print(foo.T) 

[1 2] 

アレイ自体

print(foo.T == foo) 

[ True True] 

同様のこの制限は、多くの意味を有しており、それは、より高い次元の文脈でfooを考慮することが有用となります。 numpyのはnp.newaxis

print(foo[np.newaxis, :]) 

[[1 2]] 

を使用しています。しかし、このnp.newaxisそれは

print(foo[None, :]) 

[[1 2]] 

文字以下だと同じことを意味するので、多くの場合、我々は代わりに Noneを使用するので、 None

np.newaxis is None 

True 

のためだけ糖衣構文であります

他に何ができるのか見てみましょう。最初の位置にNoneの例を使用していますが、OPは2番目の位置を使用しています。この位置は、どの次元が拡張されるかを指定します。私たちはそれをさらに引き継ぐことができました。これらの例は

print(foo[None, :]) # same as foo.reshape(1, 2) 

[[1 2]] 

print(foo[:, None]) # same as foo.reshape(2, 1) 

[[1] 
[2]] 

print(foo[None, None, :]) # same as foo.reshape(1, 1, 2) 

[[[1 2]]] 

print(foo[None, :, None]) # same as foo.reshape(1, 2, 1) 

[[[1] 
    [2]]] 

print(foo[:, None, None]) # same as foo.reshape(2, 1, 1) 

[[[1]] 

[[2]]] 

0を説明してみましょう

numpyのは、アレイ

print(np.arange(27).reshape(3, 3, 3)) 

      dim2   
      ────────⇀ 
dim0 → [[[ 0 1 2] │ dim1 
      [ 3 4 5] │ 
      [ 6 7 8]] ↓ 
      ────────⇀ 
    → [[ 9 10 11] │ 
      [12 13 14] │ 
      [15 16 17]] ↓ 
      ────────⇀ 
    → [[18 19 20] │ 
      [21 22 23] │ 
      [24 25 26]]] ↓ 
関連する問題