我有一个包含不同类型值的特征数组:
>>> features = train_df.values
>>> [x for x in features]
[True,
array([2, 0, 0, ..., 0, 0, 0]),
False,
False,
17,
1,
10,
array([0, 0, 0, ..., 0, 0, 0])]
我想生成一个包含上述所有功能的串联的单个 python 数组,即
np.array([True, 2, 0, 0, ..., 0, 0, 0, False, False, 17, 1, 10, 0, 0, 0, ..., 0, 0, 0])
我的目标是使用上述特征向量训练sklearn LogisticRegression。在python中做到这一点的最佳方法是什么?
你可以通过一个简单的列表理解来做到这一点。
>>> x
[True, array([2, 0, 0, 0, 0, 0]), False, False, 17, 1, 10, array([0, 0, 0, 0, 0, 0])]
>>> [j for i in x for j in (i if isinstance(i, np.ndarray) else (i, ))]
[True, 2, 0, 0, 0, 0, 0, False, False, 17, 1, 10, 0, 0, 0, 0, 0, 0]
>>> np.array(_, dtype='O')
array([True, 2, 0, 0, 0, 0, 0, False, False, 17, 1, 10, 0, 0, 0, 0, 0, 0], dtype=object)
如果你不添加dtype='O'
,你的布尔值将被转换为整数。这取决于你是否愿意。使用对象数组通常不受欢迎,因为它们不提供矢量化/效率优势。