首页 > 解决方案 > 具有多个元素的数组的真值是不明确的。使用 a.any() 或 a.all()。OneHotEncoder

问题描述

cat_features = train_data.dtypes[train_data.dtypes == 'object'].index
ohe = OneHotEncoder(cat_features, handle_unknown='ignore')

ohe.fit_transform(train_data)

结果是

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我该如何解决?

标签: pythonpandasnumpyscikit-learn

解决方案


您正在将数组与字符串进行比较,但 numpy 只能单独比较数组的元素。所以 numpy 返回一个布尔值数组。

现在由您决定是否要确保.any()element isTrue.all()elements are True

如果您试图获取 type 元素的索引'object',请尝试列表理解:

cat_features = [td for td in train_data if td.dtype == 'object']

这为您提供了所有train_data类型为 的元素的列表'object'


推荐阅读