42

(N,)次元配列と(N,1)次元配列の変換について質問があります。たとえば、y は (2,) 次元です。

A=np.array([[1,2],[3,4]])

x=np.array([1,2])

y=np.dot(A,x)

y.shape
Out[6]: (2,)

しかし、以下は y2 が (2,1) 次元であることを示しています。

x2=x[:,np.newaxis]

y2=np.dot(A,x2)

y2.shape
Out[14]: (2, 1)

コピーせずに y2 を y に変換する最も効率的な方法は何でしょうか?

ありがとう、トム

4

4 に答える 4

50

reshapeこれのために働く

a  = np.arange(3)        # a.shape  = (3,)
b  = a.reshape((3,1))    # b.shape  = (3,1)
b2 = a.reshape((-1,1))   # b2.shape = (3,1)
c  = b.reshape((3,))     # c.shape  = (3,)
c2 = b.reshape((-1,))    # c2.shape = (3,)

また、新しい形状に必要でない限り、データをコピーしないことに注意しreshapeてください (ここでは必要ありません)。

a.__array_interface__['data']   # (22356720, False)
b.__array_interface__['data']   # (22356720, False)
c.__array_interface__['data']   # (22356720, False)
于 2013-07-26T01:24:01.490 に答える
19

使用numpy.squeeze:

>>> x = np.array([[[0], [1], [2]]])
>>> x.shape
(1, 3, 1)
>>> np.squeeze(x).shape
(3,)
>>> np.squeeze(x, axis=(2,)).shape
(1, 3)
于 2015-04-19T20:22:40.513 に答える
0

反対の翻訳は、次のようにして行うことができます。

np.atleast_2d(y).T
于 2014-07-30T14:46:07.293 に答える