2017-10-22 25 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',你的布爾變量將被強制轉換爲整數。這取決於你是否要這麼做。與對象數組一起工作通常是不受歡迎的,因爲它們不提供矢量化/效率的好處。

相關問題