簡體   English   中英

將 NumPy 向量轉換為二維數組/矩陣

[英]Convert NumPy vector to 2D array / matrix

將向量轉換為二維數組的最佳方法是什么?

例如,大小為 (10, ) 的向量 b

a = rand(10,10)
b = a[1, :]
b.shape

Out: (10L,)

可以轉換為大小為 (10,1) 的數組

b = b.reshape(len(b), 1)

有沒有更簡潔的方法來做到這一點?

由於使用a[1, :]索引時會丟失一個維度,因此需要替換丟失的維度以保持 2D 形狀。 考慮到這一點,您可以使用以下語法進行選擇:

b = a[1, :, None]

然后b具有所需的形狀 (10, 1)。 請注意, Nonenp.newaxis相同,並插入長度為 1 的新軸。

(這與寫b = a[1, :][:, None]但只使用一個索引操作,因此節省了幾微秒。)

如果您想繼續使用reshape (這也可以用於此目的),值得記住的是,您可以將 -1 用於(最多)一個軸,讓 NumPy 找出正確的長度應該是什么:

b.reshape(-1, 1)

使用np.newaxis

In [139]: b.shape
Out[139]: (10,)

In [140]: b=b[:,np.newaxis]

In [142]: b.shape
Out[142]: (10, 1)

我認為最清楚的方法是使用np.expand_dims ,它基本上向數組添加了一個軸。 如果您使用axis=-1 ,則會添加一個新軸作為最后一個維度。

b = np.expand_dims(b, axis=-1)

或者如果你想讓我更簡潔:

b = np.expand_dims(b, -1)

你也可以使用 np.asmatrix(b)

a.shape                 #--> (12,)
np.asmatrix(a).shape    #--> (1, 12)
np.asmatrix(a).T.shape  #--> (12, 1)

雖然這個問題很老了,但我認為還是值得回答的。

使用這種風格:

b = a[1:2, :]

暫無
暫無

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

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