3

I have to change a list of values into multiple array set as shown below:

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

I need this value into an array like:

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

If possible not use for loop.

Ashwini Chaudhary
  • 244,495
  • 58
  • 464
  • 504
user_az
  • 363
  • 2
  • 3
  • 17

3 Answers3

7

Use a list comprehension:

train_set = [[x] for x in list_train_data]

Demo:

>>> 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']]
Saullo G. P. Castro
  • 56,802
  • 26
  • 179
  • 234
Ashwini Chaudhary
  • 244,495
  • 58
  • 464
  • 504
7

Scince you added numpy tag, here is a numpy solution:

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]

the result is:

array([[u'Class 1'],
       [u'Class 2'],
       [u'Class 3'],
       [u'Class 4'],
       [u'Class 5']], dtype=object)
HYRY
  • 94,853
  • 25
  • 187
  • 187
1

There is of course another way without using loops, and thats using the map function:

>>> 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']]

No loops whatsoever. However this is slower than a LC. But still no for loops to be seen.

Games Brainiac
  • 80,178
  • 33
  • 141
  • 199