【发布时间】:2013-06-29 23:59:35
【问题描述】:
有没有一种区分python中行向量和列向量的好方法?到目前为止,我使用的是 numpy 和 scipy,到目前为止我看到的是,如果我要给一个向量,比如说
from numpy import *
Vector = array([1,2,3])
他们不能说天气我的意思是行或列向量。此外:
array([1,2,3]) == array([1,2,3]).transpose()
True
这在“现实世界”中是完全不真实的。
我意识到来自上述模块的向量上的大多数功能都不需要区分。例如outer(a,b) 或a.dot(b),但为了我自己的方便,我想区分一下。
【问题讨论】:
-
您观察到的行为实际上是正确“在现实世界中”:一维数字序列既不是行也不是列向量。行或列向量实际上是一个 二维 维数组(其中二维之一为 1)。因此,您的测试应该使用
array([[1, 2, 3]])来完成,而不是它的转置。 -
这实际上在数学上不太正确。矩阵是 mxn,根据定义,行向量是 m=1 的向量,列向量是 n=1 的向量。维度在数学上完全不同,与向量空间中基组中向量的数量有关,所以实际上我们根本不应该谈论单个向量的维度。我认为谈论“现实世界”的原始海报是在谈论线性代数和数学的世界,所以是正确的。程序员往往会错误地使用这些术语。
-
@neuronet,这实际上在数学上并不完全正确。您所描述的是事物的方式,例如在 Matlab 中,这是一个非常有用的约定。数学上正确的方法是区分来自给定空间的向量(按约定表示为列)和来自其dual space 的向量(按约定表示为行)。
标签: python arrays numpy vector scipy