1

给定一个两个昏暗的 numpy 数组:

a =  array([[-1, -1],
       [-1,  1],
       [ 1,  1],
       [ 1,  1],
       [ 1,  0],
       [ 0, -1],
       [-1,  0],
       [ 0, -1],
       [-1,  0],
       [ 0,  1],
       [ 1,  1],
       [ 1,  1]])

和转换字典:

d = {-1:'a', 0:'b', 1:'c'}

如何将原始数组映射到字符组合列表?

我需要的是以下列表(或数组)

输出 = ['aa', 'ac', 'cc', 'cc', 'cb', 'ba', ....]

(我正在做一些机器学习分类,我的类由 -1、0,1 的组合标记,我需要将“标签”数组转换为可读的东西,如“aa”、“bc”等)。

如果sklearn 包中有一个简单的函数(binarizer,或者 one-hot-encoding),可以将原始的凹凸数组转换为一组标签,那就完美了!

4

3 回答 3

4

这是列表理解的另一种方法:

my_dict = {-1:'a', 0:'b', 1:'c'}
out_put  = ["".join([my_dict[val] for val in row]) for row in a]
于 2017-01-05T10:57:51.537 回答
3

我认为您应该能够通过列表理解来做到这一点

# naming something `dict` is a bad idea
d = {-1:'a', 0:'b', 1:'c'}
out_put = ['%s%s' % (d[x], d[y]) for x, y in a]
于 2017-01-05T10:53:07.757 回答
1

我认为以下内容非常具有可读性:

def switch(row):
    dic = {
        -1:'a',
        0:'b',
        1:'c'
    }
    return dic.get(row)

out_put = [switch(x)+switch(y) for x,y in a]
于 2017-01-05T11:01:12.773 回答