6

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)

4

1 に答える 1

7

お気づきのように、特に 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)

しかし、このような場合には他の方法のいずれかを使用します。

于 2013-03-27T20:18:44.403 に答える