【发布时间】:2016-07-21 16:02:02
【问题描述】:
我对选择 NumPy 数组的一列有些困惑,因为结果与 Matlab 甚至 NumPy 矩阵不同。请看以下案例。
在Matlab中,我们使用以下命令从矩阵中选择列向量。
x = [0, 1; 2 3]
out = x(:, 1)
然后out变成[0; 2],是一个列向量。
用NumPy 矩阵
做同样的事情x = np.matrix([[0, 1], [2, 3]])
out = x[:, 0]
那么输出就是预期的np.matrix([[0], [2]]),它是一个列向量。
但是,如果是 NumPy 数组
x = np.array([[0, 1], [2, 3]])
out = x[:, 0]
输出是np.array([0, 2]),它是一维的,所以它不是列向量。我的期望是应该是np.array([[0], [2]])。
我有两个问题。
1. 为什么 NumPy 数组情况的输出与 NumPy 矩阵情况不同?这让我很困惑,但我认为这可能是有原因的。
2. 要从 2-Dim NumPy 数组中获取列向量,我是否应该执行其他操作,例如 expand_dims
x = np.array([[0, 1], [2, 3]])
out = np.expand_dims(x[:, 0], axis = 1)
【问题讨论】:
-
由于广播的工作方式,您不应该关心一维向量是行还是列。随心所欲地使用它。
标签: python arrays numpy matrix vector