対話型インタープリターを使用してこれを見つけることができます。
In [3]: hyperplanes = np.mat([[0.7071, 0.7071, 1],
...: [-0.7071, 0.7071, 1],
...: [0.7071, -0.7071, 1],
...: [-0.7071, -0.7071, 1]])
Python では行末にセミコロンは必要ないことに注意してください。
In [4]: hyperplanes
Out[4]:
matrix([[ 0.7071, 0.7071, 1. ],
[-0.7071, 0.7071, 1. ],
[ 0.7071, -0.7071, 1. ],
[-0.7071, -0.7071, 1. ]])
オブジェクトを取得しmatrix
ます。NumPy は通常、ndarray
(上記np.array
の代わりに行うnp.mat
) を使用しますが、この場合、行列であろうと であろうとすべてが同じndarray
です。
を見てみましょうa
。
In [7]: hyperplanes[:][:,0:2].T
Out[7]:
matrix([[ 0.7071, -0.7071, 0.7071, -0.7071],
[ 0.7071, 0.7071, -0.7071, -0.7071]])
これのスライスは少し奇妙です。次の点に注意してください。
In [9]: hyperplanes[:]
Out[9]:
matrix([[ 0.7071, 0.7071, 1. ],
[-0.7071, 0.7071, 1. ],
[ 0.7071, -0.7071, 1. ],
[-0.7071, -0.7071, 1. ]])
In [20]: np.all(hyperplanes == hyperplanes[:])
Out[20]: True
言い換えれば、そこ[:]
にはまったく必要ありません。次に、 が残りますhyperplanes[:,0:2].T
。は[:,0:2]
に簡略化できます。これは、 のすべての行を取得したいが、最初の 2 列だけ[:,:2]
を取得したいことを意味します。hyperplanes
In [14]: hyperplanes[:,:2]
Out[14]:
matrix([[ 0.7071, 0.7071],
[-0.7071, 0.7071],
[ 0.7071, -0.7071],
[-0.7071, -0.7071]])
.T
転置を与えます。
In [15]: hyperplanes[:,:2].T
Out[15]:
matrix([[ 0.7071, -0.7071, 0.7071, -0.7071],
[ 0.7071, 0.7071, -0.7071, -0.7071]])
最後に、b = hyperplanes[:,2]
すべての行と 2 番目の列を示します。つまり、列 2 のすべての要素です。
In [21]: hyperplanes[:,2]
Out[21]:
matrix([[ 1.],
[ 1.],
[ 1.],
[ 1.]])
Python はインタープリター言語であるため、自分で試してみて、何が起こっているのかを理解するのは簡単です。将来、行き詰まった場合は、インタープリターに戻って試してみてください - いくつかの数字を変更したり.T
、.