【发布时间】:2018-02-28 00:47:23
【问题描述】:
我想转换这样的东西:
['dog', 'cat', 'fish', 'dog', 'dog', 'bird', 'cat', 'bird']
变成一个布尔矩阵,矩阵中的每一列用于分类。对于这个例子,它会是这样的:
(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 解决方案)。
【问题讨论】: