Lukasz - 9 months ago 59

Python Question

I've got a .csv file that I'm trying to load into a numpy array as a column vector. When using

`temp = np.genfromtxt(location, delimiter=',')`

the data is a

`numpy array`

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

whereas, I would like something like this:

`[array([[0],`

[0],

[0],

...

[0],

[1],

[0],

...

[0],

[0]]), array([[0],

[0],

[0],

...

[0],

[1],

[0],

...)]

I'm able to accomplish this using

`my_data = []`

for i in range(len(temp)):

foo = np.array([temp[i]]).T

my_data.append(foo)

But am wondering if there is a more efficient way of achieving the required result.

Answer

Add a new axis to `temp`

, and cast sublists to *np arrays*:

```
temp = np.genfromtxt(location, delimiter=',')
my_data = map(np.array, temp[:, :, np.newaxis])
```

For Python 3, call `list`

on the above result or use a list comprehension:

```
my_data = [np.array(arr) for arr in temp[:, :, np.newaxis]]
```

Source (Stackoverflow)