首页 > 解决方案 > 如何显示预测类的名称

问题描述

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

标签: pythonpandasnumpy

解决方案


您可以使用 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']]

推荐阅读