我有4个长度为256的向量(numpy.ndarray类型),我希望创建一个新的矩阵,其中每一列对应于一个向量。因此,在连接后,我将得到一个256 * 4的矩阵。
我尝试使用hstack或np.concatenate方法,但是我没有得到想要的结果。
提前致谢。
我尝试使用hstack或np.concatenate方法,但是我没有得到想要的结果。
提前致谢。
vstack
和转置 T
:n = 256
a = np.arange(n) + 0
b = np.arange(n) + 1
c = np.arange(n) + 2
d = np.arange(n) + 3
x = np.vstack([a,b,c,d]).T
x
输出:
array([[ 0, 1, 2, 3],
[ 1, 2, 3, 4],
[ 2, 3, 4, 5],
...,
[253, 254, 255, 256],
[254, 255, 256, 257],
[255, 256, 257, 258]])
或者,另外一种方法是使用 column_stack
方法:
x = np.column_stack([a,b,c,d])
如果你想将它作为实际的矩阵
而不是ndarray
获取:
m = np.matrix([a,b,c,d]).T
更新:如果要使用循环来完成,您可以将数组收集到列表中,然后将它们堆叠在一起:
n = 256
l = []
for i in range(4):
l.append(np.arange(n) + i)
x = np.vstack(l).T
x
n = 256
x = np.arange(n)
for i in range(1,4):
x = np.vstack([x, np.arange(n) + i])
x = x.T
x
np.stack
也可以使用(带有axis=1)。它们都做同样的事情-扩展所有输入的维度,并连接起来。 - hpauljvstack
会降低速度。 - hpaulj