为了简单起见,我有4个向量(numpy.ndarray类型),每个大小为256,我想创建一个新的矩阵,其中每个列对应于每个向量。所以在连接之后我会得到一个256*4的矩阵
我尝试使用hstack或np.concatenate,但没有得到我想要的结果。。
提前谢谢
最佳答案
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])
如果你想把它变成一个实际的
matrix
,而不是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