簡體   English   中英

Python:將列添加到numpy 1d數組

[英]Python: Add a column to numpy 1d array

我有2個數組。

a = np.zeros(2)
b = np.ones(2)

我想將它們結合起來,使其輸出為:

array([[0, 1],
       [0, 1]])

如果我有a = np.zeros((2,1))b = np.zeros((2,1)) ,則可以使用np.hstack((a,b))np.append(a,b,1) 但是我沒有。

有什么想法嗎?

您可以使用np.c_

>>> a = np.zeros(2); b = np.ones(2)
>>> np.c_[a, b]
array([[0., 1.],
       [0., 1.]])

或者:

>>> np.array((a, b), order='F').T
array([[0., 1.],
       [0., 1.]])

在這里, order='F'確保最終結果是C-contiguous

您可以隨時添加尾隨尺寸...

>>> np.hstack([a[:,None], b[:,None]])
array([[ 0.,  1.],
       [ 0.,  1.]])
>>>

您需要以一種或多種方式向數組添加額外的維度。

In [2]: a = np.zeros(2)
   ...: b = np.ones(2)
   ...: 

stack可讓您選擇新尺寸:

In [3]: np.stack((a,b),axis=1)
Out[3]: 
array([[0., 1.],
       [0., 1.]])

In [4]: np.stack((a,b),axis=0)
Out[4]: 
array([[0., 0.],
       [1., 1.]])

np.array也這樣做,就像stack與軸0 -轉來獲取列:

In [5]: np.array((a,b)).T
Out[5]: 
array([[0., 1.],
       [0., 1.]])

column_stack是一個較舊的stack ,在這種情況下也添加了正確的尺寸。

In [6]: np.column_stack((a,b))
Out[6]: 
array([[0., 1.],
       [0., 1.]])

這是一個好主意一個學習與要做到這一點concatenate和自己的另外的維度。 並查看各種stack函數的代碼,以了解它們如何完成相同的任務。

您還可以重塑它們:

>>> a, b = np.zeros(2), np.ones(2)
>>> np.hstack([a.reshape(2,1), b.reshape(2,1)])
array([[ 0.,  1.],
       [ 0.,  1.]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM