Say I have a .txt file with many rows and columns of data and a list containing integer values. How would I load the row numbers in the text file which match the integers in the list?

To illustrate, say I have a list of integers:

```
a = [1,3,5]
```

How would I read only rows 1,3 and 5 from a text file into an array?

The loadtxt routine in numpy let’s you both skip rows and use particular columns. But I can’t seem to find a way to do something along the lines of (ignoring incorrect syntax):

```
new_array = np.loadtxt('data.txt', userows=a, unpack='true')
```

Thank you.

Best answer

Given this file:

```
1,2,3
4,5,6
7,8,9
10,11,12
13,14,15
16,17,18
19,20,21
```

You can use the csv module to get the desired np array:

```
import csv
import numpy as np
desired=[1,3,5]
with open('/tmp/test.csv', 'r') as fin:
reader=csv.reader(fin)
result=[[int(s) for s in row] for i,row in enumerate(reader) if i in desired]
print(np.array(result))
```

Prints:

```
[[ 4 5 6]
[10 11 12]
[16 17 18]]
```