![](/img/trans.png)
[英]How do I stack multiple columns from one single array on top of each other in Python?
[英]How to concatenate columns on top of each other in an array
說我有以下數組:
a = np.array([[1,3,5,2,3],[3,2,5,6,7],[1,7,3,6,5]]);
如何將列彼此堆疊以形成單個列向量以產生以下結果?
b =np.array([[1], [3], [1], [3], [2], [7],[5],[5],[3],[2],[6],[6],[3],[7],[5]]);
您可以將'F'
與Fortran訂單一起使用,或進行ravel
或reshape
:
a.ravel('F')[:, None]
# array([[1],
# [3],
# [1],
# [3],
# [2],
# ...
您可以展平轉置數組,創建新軸,然后再次轉置。
>>> np.ravel(a.T)[None].T
array([[1],
[3],
[1],
[3],
[2],
[7],
[5],
[5],
[3],
[2],
[6],
[6],
[3],
[7],
[5]])
堅持堆疊思想, aT
的列表為:
In [87]: list(a.T)
Out[87]:
[array([1, 3, 1]),
array([3, 2, 7]),
array([5, 5, 3]),
array([2, 6, 6]),
array([3, 7, 5])]
然后可以在一個軸上串聯
In [90]: np.concatenate(a.T)
Out[90]: array([1, 3, 1, 3, 2, 7, 5, 5, 3, 2, 6, 6, 3, 7, 5])
並通過添加維度將其轉換為列向量:
In [91]: _[:,None]
Out[91]:
array([[1],
[3],
[1],
[3],
[2],
[7],
[5],
[5],
[3],
[2],
[6],
[6],
[3],
[7],
[5]])
可能值得注意的是,轉置aT
是通過將順序更改為F
來產生的。 因此,這是a.ravel(order='F')
方法的一種變體。 為了堆疊列,它必須對數組的元素重新排序(默認為“ c”面向行)。
最短的是aTreshape(-1,1)
:
aT
為良好的布局, reshape
塑形以獲得良好的形狀。 或等效值: a.reshape(-1,1,order='F')
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.