如何显示预测班级的名称

时间:2018-07-17 20:51:19

标签: python pandas numpy

Predict为每列返回一个numpy数组(仅由0和1组成)。

如何打印具有1的列的名称而不显示具有0的列?

predict

[[0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], 
 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0.], 
 [0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]

我有一个列名列表-columns_names

['1','10','11','12','13','14','15','16','17','18','19','2 ','20','21','22','23','24','25','26','27','28','29','3','30', '31','32','33','34','4','5','6','7','8','9']

type(predict) - numpy.ndarray

type(columns_names) - list

2 个答案:

答案 0 :(得分:2)

您可以使用pandas数据框来帮助标记numpy矩阵。

import pandas as pd

predict = [[0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], 
 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0.], 
 [0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]

columns_names = ['1', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '2', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '3', '30', '31', '32', '33', '34', '4', '5', '6', '7', '8', '9']

df = pd.DataFrame(predict, columns=columns_names)
df.columns[df.any()].tolist()

输出:

['15', '17', '24', '6']

您可以使用

df.apply(lambda x: df.columns[x.eq(1)].tolist(), axis=1).tolist()

输出:

[['17', '24'], ['6'], ['15', '24']]

答案 1 :(得分:1)

您可以通过简单的列表理解来做到这一点,而无需导入任何外部模块。

list(i for i,j in zip(columns_names, predict) if j)

这是一个称为“遮罩”的概念。您可以在这篇文章中了解更多相关信息:Python: Elegant and efficient ways to mask a list