Numpy: reshape または newaxis を使用して次元を追加する 質問する

Numpy: reshape または newaxis を使用して次元を追加する 質問する

またはndarray.reshapenumpy.newaxisどちらも、配列に新しい次元を追加するために使用できます。 どちらもビューを作成するようですが、一方ではなく他方を使用する理由や利点はありますか?

>>> b
array([ 1.,  1.,  1.,  1.])
>>> c = b.reshape((1,4))
>>> c *= 2
>>> c
array([[ 2.,  2.,  2.,  2.]])
>>> c.shape
(1, 4)
>>> b
array([ 2.,  2.,  2.,  2.])
>>> d = b[np.newaxis,...]
>>> d
array([[ 2.,  2.,  2.,  2.]])
>>> d.shape
(1, 4)
>>> d *= 2
>>> b
array([ 4.,  4.,  4.,  4.])
>>> c
array([[ 4.,  4.,  4.,  4.]])
>>> d
array([[ 4.,  4.,  4.,  4.]])
>>> 

`

ベストアンサー1

numpy.newaxisover を使用する理由の 1 つndarray.reshapeは、操作する「不明な」次元が複数ある場合です。たとえば、次の配列の場合:

>>> arr.shape
(10, 5)

これは機能します:

>>> arr[:, np.newaxis, :].shape
(10, 1, 5)

しかし、これは当てはまりません:

>>> arr.reshape(-1, 1, -1)
...
ValueError: can only specify one unknown dimension

おすすめ記事