我最近从Matlab/Octave切换到SciPy/NumPy,我喜欢它。但是我发现有时候我会因为细微的差异而感到困惑。在NumPy中,np.array([1,2,3,4,5])与np.array([[1],[2],[3],[4],[5]])不同吗?
在Matlab中,当我们声明尺寸5的“行向量”,那么我们使用下面的命令:
x = [1, 2, 3 ,4, 5] % in matlab
如下所示
该矢量的大小可以使用“size
”命令来检查:
size(x)
ans =
1 5
我曾以为,在与NumPy下面是做同样的事情如上。
x = np.array([1, 2, 3, 4, 5]) # in NumPy
但是大小有点奇怪。
>>> np.shape(x)
(5,)
大小并不(5, 1)
,但它是(5,)
。这究竟意味着什么?我不太清楚为什么这个元组的第二个元素是空的。
我检查下列返回(5,1)
y = np.array([[1], [2], [3], [4], [5]])
np.shape(y)
(5, 1)
然后,是 “Y” 中的相同NumPy的 “X”?我认为它不是。我可能会误解某些东西,但是有没有人可以在这个话题上给我启发?
谢谢!
在MATLAB中的矩阵具有至少2个尺寸(年前它有完全相同2)。在numpy中,一个数组可以有任何数字 - 0,1,2等。另一个重要的区别 - MATLAB'pads'数组尺寸在最后,因此是'(5,1)'形状。 numpy在开始时添加它们 - 如果需要的话。 – hpaulj
感谢您的评论!但我认为MATLAB在结尾“填充”数组维度并不是真的。正如你所提到的,在Matlab中,一个矩阵具有二维,并且一个向量被假定为一个特殊类型的维数为N×1或1×N的矩阵。所以一个行向量的大小变为[1,N ]。如果它是列向量,则大小变为[N,1]。 – chanwcom
如果我要求“第10”维度,那么告诉我'1':'size(1:10,10)'没有问题。 – hpaulj