如何将矩阵转换为字符?

How can I convert a matrix into characters?

classes = ['A', 'B', 'C']

my_data = [
    [2, 1, 3],
    [1, 1, 2],
    [3, 3, 3],
    [3, 1, 3],
    [3, 1, 3],
    [3, 3, 2]
]

这里,A=1,B=2,C=3。

假设,我想先在矩阵my_data的每一行中找到最大值,然后我想将它们转换成classes中的字符。

我可以在不使用循环的情况下在 python 中完成吗?

以下源代码不适合我:

def prediction_to_name(pred):
    return classes[np.argmax(pred)]

您需要遍历您的数据,除非为每个 n in 0:len(my_data) 重复剪切和粘贴 result.append(classes[np.argmax(my_data[n])]),这只是手动输入循环。

import numpy as np
classes = ['A', 'B', 'C']
my_data = [[2, 1, 3],
     [1, 1, 2],
     [3, 3, 3],
     [3, 1, 3],
     [3, 1, 3],
     [3, 3, 2]]

classifiedData = [classes[np.argmax(row)] for row in my_data]
print(classifiedData) # ['C', 'C', 'A', 'A', 'A', 'A']

您的数据索引是 one-based 而 python 是 zero-based,所以只要减去一个,它们就相等了。

>>> [classes[max(row) - 1] for row in my_data]
['C', 'B', 'C', 'C', 'C', 'C']

这个怎么样?

print(np.array(classes)[np.max(my_data,axis=1)-1])

结果:

['C' 'B' 'C' 'C' 'C' 'C']