【发布时间】:2013-02-16 09:26:15
【问题描述】:
来自 Matlab/Octave 的背景,我一直在尝试学习 numpy。一直困扰我的一件事是向量和多维数组之间的区别。对于这个问题,我将给出一个我遇到的具体问题,但如果有人还可以解释 numpy 中一维数组背后的更一般的图片,我将非常感激,为什么你首先想要它们,如何避免混合单维和多维数组等时出现麻烦。无论如何,问题:
我有一个名为 X 的二维数组:
X = numpy.arange(10).reshape(2,5)
我想获取 X 的最后一列并将其存储为另一个名为 Y 的二维数组(即列向量)。为此我能想到的唯一方法是:
Y = numpy.atleast_2d(X[:,4]).T
但我不喜欢这样有几个原因:
我觉得我不应该告诉它在 X[:,4] 中隐含方向时转置向量。
在经常出现这种情况的代码中,使用 atleast_2D 似乎很麻烦。感觉我做错了什么。
那么,简而言之,有没有更好的方法呢?
谢谢。
【问题讨论】:
-
np.atleast_2d(x).T也可以写成x.reshape(-1, 1)。如果你经常这样做,为它定义一个帮助器可能是个好主意,def ascolumn(x): return x.reshape(-1, 1)。