如何将矩阵转换为字符?
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']
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']