【发布时间】:2015-05-25 22:42:31
【问题描述】:
当我从矩阵中提取一列时,如何将其保留为列向量?在下面的示例中,a[:,0] 被视为行向量。
a = np.array([[1,2,3],[1,2,3]])
a[:,0]
a[:,0] + np.array([[1],[2]]) # I expect a 2x1 vector, not a 2x2 matrix
我知道我可以使用a[:,0][:, np.newaxis] 将a[:,0] 转换为所需的维度。但是,我想知道是否有更通用和 Pythonic 的解决方案将向量保持为列向量(因为在大多数论文中,向量都是列向量)。
【问题讨论】:
-
@all_m 正如我所说,我知道如何解决转换为列向量的技术问题。我想我想知道将 Python 向量保留为列的“良好做法”是什么,因为在论文中向量始终是一列。
-
一维 numpy
ndarray实际上只是一个一维数组 - 它不是第二维长度为 1 的“行”或“列”。如果你真的想要一个以这种方式运行的类,您可以使用np.matrix(查看我链接到的问题中的第二个答案)。但是,使用np.matrixis discouraged for a number of reasons。 -
对于同一个问题,除了标记为这个重复的问题外,还有更多问题,例如stackoverflow.com/questions/24607419/…, stackoverflow.com/questions/15165170/…
-
a[:,[0]]保留第二维。但是添加 [:,newaxis]` 完全是“pythonic”,或者更确切地说,使用numpy的标准功能。重塑数组以满足您的需求并没有错。这种操作很便宜。
标签: python numpy matrix vector