row是行还是列python中_Python:区分行和列向量

当我试图计算w^T * x使用numpy的,对我来说是超级混乱以及。事实上,我自己无法实现。所以,这是NumPy中我们需要熟悉的几个陷阱之一。

至于1D阵列而言,有的行向量和列向量之间没有区别。他们完全一样。

请看下面的例子,在这里我们得到了相同的结果,在所有情况下,这是不是在真正的线性代数(的理论意义):

In [37]: w

Out[37]: array([0, 1, 2, 3, 4])

In [38]: x

Out[38]: array([1, 2, 3, 4, 5])

In [39]: np.dot(w, x)

Out[39]: 40

In [40]: np.dot(w.transpose(), x)

Out[40]: 40

In [41]: np.dot(w.transpose(), x.transpose())

Out[41]: 40

In [42]: np.dot(w, x.transpose())

Out[42]: 40

有了这些信息,现在让我们尝试计算矢量的平方长度|w|^2。我们需要将w转换为2D数组。

In [51]: wt = w[:, np.newaxis]

In [52]: wt

Out[52]:

array([[0],

[1],

[2],

[3],

[4]])

现在,让我们来计算矢量w的平方长度(或平方幅度):

In [53]: np.dot(w, wt)

Out[53]: array([30])

请注意,我们使用w,wt代替wt,w(如在理论线性代数)因为形状与使用np.dot(wt,w)不匹配。所以,我们有矢量的平方长度为[30]。也许这是区分(numpy的解释)行列向量的方法之一吗?

最后,我有没有提到,我想通过实施w^T * x的方式?是的,我所做的:

In [58]: wt

Out[58]:

array([[0],

[1],

[2],

[3],

[4]])

In [59]: x

Out[59]: array([1, 2, 3, 4, 5])

In [60]: np.dot(x, wt)

Out[60]: array([40])

所以,在与NumPy,操作数的顺序是相反的,如上述证明,相反的是,我们在理论上的线性代数研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值