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