簡體   English   中英

在numpy中將向量組合為列矩陣

[英]combining vectors as column matrix in numpy

我有以下三個向量:

a = np.ones(20)
b = np.zeros(20)
c = np.ones(20)

我正在嘗試將它們合並為20x3尺寸的矩陣。

目前我正在做:

n1 = np.vstack((a,b))
n2 = np.vstack((n1,c)).T

這可行,但是沒有辦法以列方式用數組填充矩陣嗎?

您可以通過幾種不同的方法來執行此操作。 以下是一些示例:

使用np.c_

np.c_[a, b, c]

使用np.dstacknp.squeeze

np.dstack((a, b, c)).squeeze()

使用np.vstack和轉置(類似於您的方法):

np.vstack((a,b,c)).T

使用np.concatenatereshape

np.concatenate((a, b, c)).reshape((-1, 3), order='F')

如果效率很重要,那么使用np.concatenate的最后一種方法似乎是我計算機上最快的方法:

>>> %timeit np.c_[a, b, c]
10000 loops, best of 3: 46.7 us per loop

>>> %timeit np.dstack((a, b, c)).squeeze()
100000 loops, best of 3: 18.2 us per loop

>>> %timeit np.vstack((a,b,c)).T
100000 loops, best of 3: 17.8 us per loop

>>> %timeit np.concatenate((a, b, c)).reshape((-1, 3), order='F')
100000 loops, best of 3: 3.41 us per loop

是的,使用column_stack

np.column_stack((a,b,c))

這適用於堆疊通用的一維數組。 在您想要20x3數組,使得每一行為(1,0,1)的特定情況下,我建議:

np.tile([1.,0.,1.], (20,1))

暫無
暫無

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

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