In [378]: height = [6.2,5.8,5.9,5.5]
...: weight = [50,100,125,40]
...: age = [18,25,45,73]
...: ftrs = [height,weight,age]
In [379]: ftrs
Out[379]: [[6.2, 5.8, 5.9, 5.5], [50, 100, 125, 40], [18, 25, 45, 73]]
我们可以简单地从列表列表中创建一个数组:
In [380]: arr = np.array(ftrs)
In [381]: arr
Out[381]:
array([[ 6.2, 5.8, 5.9, 5.5],
[ 50. , 100. , 125. , 40. ],
[ 18. , 25. , 45. , 73. ]])
In [382]: arr[:,0]
Out[382]: array([ 6.2, 50. , 18. ])
数组的列是您的“特征向量”,可以通过 numpy 数组索引轻松访问。
或者你可以转置数组,使特征行:
In [383]: arrt = arr.transpose()
In [384]: arrt
Out[384]:
array([[ 6.2, 50. , 18. ],
[ 5.8, 100. , 25. ],
[ 5.9, 125. , 45. ],
[ 5.5, 40. , 73. ]])
In [385]: arrt[0]
Out[385]: array([ 6.2, 50. , 18. ])
等效地,您可以列堆叠列表(np.c_ 这样做):
In [386]: np.stack(ftrs, axis=1)
Out[386]:
array([[ 6.2, 50. , 18. ],
[ 5.8, 100. , 25. ],
[ 5.9, 125. , 45. ],
[ 5.5, 40. , 73. ]])
评论中提到的list(zip 是众所周知的“转置”列表列表的方式。如果您不需要 numpy,这是一个很好的了解工具。
在 [387] 中:列表(zip(*ftrs))
输出[387]:[(6.2, 50, 18), (5.8, 100, 25), (5.9, 125, 45), (5.5, 40, 73)]