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])