将 Numpy 数组映射到字符列表

Map a Numpy array into a list of characters

给定两个昏暗的 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'}

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

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

out_put = ['aa', 'ac', 'cc', 'cc', 'cb', 'ba', .. ..]

(我正在做一些机器学习分类,我的 类 被标记为 -1, 0,1 的组合,我需要将 'labels' 的数组转换成可读的东西,因为'aa'、bc' 等等)。

如果sklearn包中有一个简单的函数(binarizer,或one-hot-encoding),可以将原始的颠簸数组转换为一组标签,即将是完美的!

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

# 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]

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

my_dict = {-1:'a', 0:'b', 1:'c'}
out_put  = ["".join([my_dict[val] for val in row]) for row in a]

我觉得下面的可读性很强:

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]