1

2 つの薄暗い 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の組み合わせでラベル付けされており、「ラベル」の配列を「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 に答える
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 に答える