我有 3 个向量,如下所示:
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.dstack
和 np.squeeze
:
np.dstack((a, b, c)).squeeze()
使用 np.vstack
并转置(类似于您的方法):
np.vstack((a,b,c)).T
使用 np.concatenate
和 reshape
:
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
关于python - 将向量组合为 numpy 中的列矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27513246/