【问题标题】:How to show name of predicted classes如何显示预测类的名称
【发布时间】:2018-12-25 15:56:33
【问题描述】:

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

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案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']]
      

      【讨论】:

      • 非常感谢!另一个问题:如何以 numpy 数组的格式返回它?例如[['15', '17'], ['24'], ['6']]
      • @GennadyMandarinov 查看更新
      • 太棒了!谢谢!
      猜你喜欢
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      • 2019-09-30
      • 2014-11-24
      • 2015-01-01
      • 2019-02-09
      • 2020-08-03
      • 1970-01-01
      相关资源
      最近更新 更多