2次元配列を作成するとします
m = np.random.normal(0, 1, size=(1000, 2))
q = np.zeros(shape=(1000,1))
print m[:,0] -q
私が取るとき、私が欲しいものとは対照的に、m[:,0].shape
私は手に入れます。配列に強制するにはどうすればよいですか?(1000,)
(1000,1)
m[:,0]
(1000,1)
お気づきのように、特に 0 番目の列を選択すると、次元が削減されます。
>>> m = np.random.normal(0, 1, size=(5, 2))
>>> m[:,0].shape
(5,)
5x1 オブジェクトを元に戻すには、多くのオプションがあります。整数ではなくリストを使用してインデックスを作成できます。
>>> m[:, [0]].shape
(5, 1)
「1 までのすべての列」を求めることができます。
>>> m[:,:1].shape
(5, 1)
または、次元を拡張するための一般的なトリックであるNone
(または)を使用できます。np.newaxis
>>> m[:,0,None].shape
(5, 1)
>>> m[:,0][:,None].shape
(5, 1)
>>> m[:,0, None, None].shape
(5, 1, 1)
最後に、次のように形状を変更できます。
>>> m[:,0].reshape(5,1).shape
(5, 1)
しかし、このような場合には他の方法のいずれかを使用します。