【问题标题】:Python: How to Convert list multiple set of arrayPython:如何转换列表多组数组
【发布时间】:2013-10-28 11:09:52
【问题描述】:

我必须将值列表更改为多个数组集,如下所示:

list_train_data = [u'Class 1',
 u'Class 2',
 u'Class 3',
 u'Class 4',
 u'Class 5']

我需要这个值到一个数组中,比如:

train_set = [['Class 1'],['Class 2'],['Class 3'],['Class 4'],['Class 5']]

如果可能,不要使用 for 循环。

【问题讨论】:

    标签: python list numpy


    【解决方案1】:

    既然你添加了 numpy 标签,这里是一个 numpy 解决方案:

    list_train_data = [u'Class 1',
     u'Class 2',
     u'Class 3',
     u'Class 4',
     u'Class 5']
    
    import numpy as np
    np.array(list_train_data, "O")[:, None]
    

    结果是:

    array([[u'Class 1'],
           [u'Class 2'],
           [u'Class 3'],
           [u'Class 4'],
           [u'Class 5']], dtype=object)
    

    【讨论】:

      【解决方案2】:

      使用列表推导:

      train_set = [[x] for x in list_train_data]
      

      演示:

      >>> list_train_data = [u'Class 1', u'Class 2', u'Class 3', u'Class 4', u'Class 5']
      >>> [[x] for x in list_train_data]
      [[u'Class 1'], [u'Class 2'], [u'Class 3'], [u'Class 4'], [u'Class 5']]
      

      【讨论】:

      • 从技术上讲,这仍在使用循环。
      【解决方案3】:

      当然还有另一种不使用循环的方法,那就是使用map函数:

      >>> list_train_data = ['Class 1',
                         'Class 2',
                         'Class 3',
                         'Class 4',
                         'Class 5']
      >>> map(lambda x: [x], list_train_data)
      [['Class 1'], ['Class 2'], ['Class 3'], ['Class 4'], ['Class 5']]
      

      没有任何循环。但是,这比 LC 慢。但仍然看不到 for 循环。

      【讨论】:

      猜你喜欢
      • 2013-05-17
      • 2012-04-04
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      相关资源
      最近更新 更多