将 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]
给定两个昏暗的 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]