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')
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))
[[ 4 5 6] [10 11 12] [16 17 18]]