gpt4 book ai didi

python - 如何使用 Numpy 对字符串数组进行一次性编码?

转载 作者:行者123 更新时间:2023-12-04 17:32:10 27 4
gpt4 key购买 nike

我知道那里有次优解决方案,但我正在尝试优化我的代码。到目前为止,我找到的最短方法是这样的:

import numpy as np
from sklearn.preprocessing import OrdinalEncoder

target = np.array(['dog', 'dog', 'cat', 'cat', 'cat', 'dog', 'dog', 'cat', 'cat'])

oe = OrdinalEncoder()
target = oe.fit_transform(target.reshape(-1, 1)).ravel()
target = np.eye(np.unique(target).shape[0])[np.array(target, dtype=np.int32)]
print(target)

[[0. 1.]
[0. 1.]
[1. 0.]
[1. 0.]
...



这是丑陋的代码,而且很长。删除它的任何部分,它将无法工作。我正在寻找一种更简单的方法,它不会涉及从两个不同的库调用六个以上的函数。

最佳答案

知道了。这将适用于任意数量的唯一值的数组。

import numpy as np

target = np.array(['dog', 'dog', 'cat', 'cat', 'cat', 'dog', 'dog',
'cat', 'cat', 'hamster', 'hamster'])

def one_hot(array):
unique, inverse = np.unique(array, return_inverse=True)
onehot = np.eye(unique.shape[0])[inverse]
return onehot

print(one_hot(target))

Out[9]:
[[0., 1., 0.],
[0., 1., 0.],
[1., 0., 0.],
[1., 0., 0.],
[1., 0., 0.],
[0., 1., 0.],
[0., 1., 0.],
[1., 0., 0.],
[1., 0., 0.],
[0., 0., 1.],
[0., 0., 1.]])

关于python - 如何使用 Numpy 对字符串数组进行一次性编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58676588/

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