# numpy的转置方法无法将一维行ndarray转换为第一列

Let's consider `a` as an 1D row/horizontal array:

``````import numpy as np
N = 10
a = np.arange(N) # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a.shape # (10,)
``````

now I want to have `b` a 1D column/vertical array transposed of `a`:

``````b = a.transpose() # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
b.shape # (10,)
``````

but the `.transpose()` method returns an identical ndarray whith the exact same shape!

``````np.array([, , , , , , , , , ])
``````

``````c = a.reshape(a.shape, 1) # or c = a; c.shape = (c.shape, 1)
c.shape # (10, 1)
``````

and to my surprise, it has a shape of `(10, 1)` instead of `(1, 10)`.

``````N = 10
b = 0:(N-1)
a = b'
size(b) % ans = 1   10
size(a) % ans = 10   1
``````

I understand that numpy ndarrays are not matrices (as discussed here), but the behavior of the numpy's transpose function just doesn't make sense to me! I would appreciate it if you could help me understand how this behavior makes sense and what am I missing here.

P.S. So what I have understood so far is that `b = a.transpose()` is the equivalent of `b = a; b.shape = b.shape[::-1]` which if you had a "2D array" of `(N, 1)` would return a `(1, N)` shaped array, as you would expect from a transpose operator. However, numpy seems to treat the "1D array" of `(N,)` as a 0D scalar. I think they should have named this method something else, as this is very misleading/confusing IMHO.