如何在Python中将矩阵转换为列向量并全部拼接在一起

3
我更熟悉Matlab,但我目前正在使用Python。如果我有4个矩阵/数组在Python中,如何将每个矩阵转换为列向量,然后将它们附加在一起形成一个大的列向量?
在Matlab中,我有:
W1 = rand(hiddenSize, visibleSize) * 2 * r - r;
W2 = rand(visibleSize, hiddenSize) * 2 * r - r;
b1 = zeros(hiddenSize, 1);
b2 = zeros(visibleSize, 1);

theta = [W1(:) ; W2(:) ; b1(:) ; b2(:)]; 

theta是我感兴趣的最终列向量。在Python中,我该怎么做?
我认为我会使用reshape函数来创建列向量(类似于W1 = reshape(W1, size(W1))),但我无法让它工作,并且我不知道如何将每个向量附加到一起创建一个大的列向量。任何见解都将是很好的!

也许我只是有点慢,但是通过将矩阵变成列向量,您想要将其展平吗?另外,它们的维度是什么? - Logan
是的,我想我想要把它压平。我对Python几乎一无所知...有没有一种简单的方法可以将矩阵压平,然后将它们附加在一起?W1是25 x 64,W2是64 x 25,b1只是长度为25的向量,而b2是长度为64的向量。编辑:我看到有一个flatten()函数。我现在会尝试使用它。谢谢! - celine36
1
你是否正在使用numPy?如果没有,我建议你尝试一下。 - Logan
使用flatten()会给我一个数组。在Python中,有没有一种简单的方法将其转换为列向量? - celine36
转置?我现在不在电脑旁边。但是numpy有你需要的所有函数。 - Logan
1个回答

3
如果你从Matlab转向Python,我强烈建议你安装NumPy(也许还有Scipy)包。
使用NumPy,你可以这样做:
import numpy as np
W1 = np.arange(25*64).reshape(25, 64)
W2 = np.arange(25*64).reshape(64, 25)
b1 = np.arange(25)
b2 = np.arange(64)

theta = np.concatenate([W1.flat, W2.flat, b1, b2])
print(theta.shape)
# (3289,)

这里有一份面向Matlab用户的NumPy介绍


非常感谢您!我真的很感激您的帮助,我一定会好好学习NumPy。谢谢! - celine36

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接