2017-10-22 27 views
1

我有一个特征阵列,其中包含不同类型的值:如何在单个python数组中连接不同类型的特征?

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

我想产生包含所有上述特征的串联的单个蟒阵列,即

np.array([True, 2, 0, 0, ..., 0, 0, 0, False, False, 17, 1, 10, 0, 0, 0, ..., 0, 0, 0]) 

我的目标是用上述特征向量训练sklearn LogisticRegression。什么是在Python中做到这一点的最佳方式?

回答

3

你可以用简单的列表理解来做到这一点。

>>> 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',你的布尔变量将被强制转换为整数。这取决于你是否要这么做。与对象数组一起工作通常是不受欢迎的,因为它们不提供矢量化/效率的好处。

相关问题