如何在单个 python 数组中连接不同类型的特征?

Posted

技术标签:

【中文标题】如何在单个 python 数组中连接不同类型的特征?【英文标题】:How to concatenate features of different types in a single python array? 【发布时间】:2018-04-02 20:31:57 【问题描述】:

我有一个包含不同类型值的特征数组:

>>> 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 中执行此操作的最佳方法是什么?

【问题讨论】:

【参考方案1】:

您可以通过简单的列表推导来做到这一点。

>>> 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',您的布尔值将被转换为整数。这取决于你是否愿意。使用对象数组通常不受欢迎,因为它们没有提供矢量化/效率优势。

【讨论】:

以上是关于如何在单个 python 数组中连接不同类型的特征?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BigQuery 中连接两个不同数据类型的数组?

如何根据自己的类型对 3D 数组的特定维度中的特征进行归一化

C中不同的数据类型

如何正确解组不同类型的数组?

如何从 char 数组中清除单个字符?

Python数据分析之单变量分析