Numpy获取二维矩阵的列作为数组

Numpy获取二维矩阵的列作为数组,numpy,Numpy,我有这样一个矩阵: >> X >> [[5.1 1.4] [4.9 1.4] [4.7 1.3] [4.6 1.5] [5. 1.4]] 我想将其第一列作为[5.1,4.9,4.7,4.6,5.] 然而,当我试图通过X[:,0]获得它时,我得到了 >> [[5.1] [4.9] [4.7] [4.6] [5. ]] 这是不一样的。如何将其作为数组获取?您可以将其用于这种情况 import numpy as np X =

我有这样一个矩阵:

>> X
>> 
[[5.1 1.4]
 [4.9 1.4]
 [4.7 1.3]
 [4.6 1.5]
 [5.  1.4]]
我想将其第一列作为
[5.1,4.9,4.7,4.6,5.]
然而,当我试图通过
X[:,0]
获得它时,我得到了

>> [[5.1]
   [4.9]
   [4.7]
   [4.6]
   [5. ]]
这是不一样的。如何将其作为数组获取?

您可以将其用于这种情况

import numpy as np

X = np.array([[5.1, 1.4], [4.9, 1.4], [4.7, 1.3], [4.6, 1.5], [5.0,  1.4]])
X_0 = [i for i in X[:,0]]
print(X_0)
输出

[5.1, 4.9, 4.7, 4.6, 5.0]

快到了!只需重塑您的结果:

X[:,0]。重塑(1,-1)
产出:

[[5.1 4.9 4.7 4.6 5.]]
完整代码

将numpy导入为np
X=np.数组([[5.1,1.4],[4.9,1.4],[4.7,1.3],[4.6,1.5],[5,1.4])
打印(X)
打印(X[:,0]。重塑(1,-1))

使用常规numpy数组:

In [3]: x = np.arange(15).reshape(5,3)                                                                                             
In [4]: x                                                                                                                          
Out[4]: 
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11],
       [12, 13, 14]])
In [5]: x[:,0]                                                                                                                     
Out[5]: array([ 0,  3,  6,  9, 12])
使用
np.matrix
(如果没有实际弃用,则使用不推荐)

要获得1d阵列,请转换为阵列并展开,或一步完成:

In [11]: X[:,0].A1                                                                                                                 
Out[11]: array([ 0,  3,  6,  9, 12])

X
是否属于
np.matrix
类型?在索引时保留维度的。请注意,有几个答案假设它是一个列表。这是否回答了您的问题?为了支持@hpaulj的评论,我不能用
numpy
数组直接复制它。如果它真的是一个numpy矩阵,答案是“不再建议使用这个类,即使对于线性代数也是如此。而是使用正则数组”——直接引用自
帮助(numpy.matrix)
的结果。这个理解在你的例子中增加了什么?@hpaulj它的速度很快&是否都在一行中你缺少了[]@你是什么意思?OP显示了一个(5,1)np矩阵。转置将产生一个(1,5)np矩阵。你显示了一个(5,)ndarray。不,不是这样的-我在我的答案中添加了完整的代码-这正是我在你的例子中得到的,
T
有什么作用吗?不带它打印。
In [11]: X[:,0].A1                                                                                                                 
Out[11]: array([ 0,  3,  6,  9, 12])