gpt4 book ai didi

python - 将单列分类的 numpy 数组/pandas DataFrame 转换为多列 bool 矩阵(每个分类类型一列)

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:24 25 4
gpt4 key购买 nike

我想转换这样的东西:

['dog', 'cat', 'fish', 'dog', 'dog', 'bird', 'cat', 'bird']

转换为 bool 矩阵,每个分类在矩阵中占一列。对于这个例子,它会是这样的:

(dog) (cat) (fish) (bird)
1 0 0 0
0 1 0 0
0 0 1 0
1 0 0 0
1 0 0 0
0 0 0 1
0 1 0 0
0 0 0 1

根据分类将值设置为 true。我知道我可以像这样迭代地执行此操作(伪代码):

class = array of classifications
new = array of size [amt of classifications, len(class)]
for i, c in enumerate(class):
if c == 'dog':
new[i][0] = 1
elif c == 'cat':
new[i][1] = 1
# and so on

我觉得在 numpy 或 pandas 中有更有效的方法(因为我最初将数据作为 DataFrame 将其转换为 numpy 数组,所以我不介意有一个 pandas 解决方案)。

最佳答案

使用get_dummies也接受 list :

a = ['dog', 'cat', 'fish', 'dog', 'dog', 'bird', 'cat', 'bird']
df = pd.get_dummies(a)
print (df)
bird cat dog fish
0 0 0 1 0
1 0 1 0 0
2 0 0 0 1
3 0 0 1 0
4 0 0 1 0
5 1 0 0 0
6 0 1 0 0
7 1 0 0 0

如果列的顺序很重要,请添加 reindexunique :

df = pd.get_dummies(a).reindex(columns=pd.unique(a))
print (df)
dog cat fish bird
0 1 0 0 0
1 0 1 0 0
2 0 0 1 0
3 1 0 0 0
4 1 0 0 0
5 0 0 0 1
6 0 1 0 0
7 0 0 0 1

关于python - 将单列分类的 numpy 数组/pandas DataFrame 转换为多列 bool 矩阵(每个分类类型一列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49013787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com