numpy.loadtxt Skipping multiple rows

numpy, python, syntax

Solution

Use `help(np.loadtxt)`. You'll find the `skiprows` parameter will allow you to skip the first `N` rows:

In [1]: import numpy as np

In [2]: help(np.loadtxt)
Help on function loadtxt in module numpy.lib.npyio:

loadtxt(fname, dtype=<type 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)
    ...
    skiprows : int, optional
        Skip the first `skiprows` lines; default: 0.

Thus, to skip `N` rows, you'd say

np.loadtxt(fname, skiprows=N)

If you need to filter rows other than the first `N` rows, use `np.genfromtxt` which can take an iterator which yields strings as its first argument:

with open(filename, 'r') as f:
    lines = (line for line in f if predicate(line))
    arr = np.genfromtxt(lines)

To skip a sequence of rows in the middle, such as rows 47--50, you could use `itertools` like this:

import itertools as IT

with open(filename, 'r') as f:
    lines = IT.chain(IT.islice(f, 46), IT.islice(f, 4, None))
    arr = np.genfromtxt(lines)

Problem

I believe the title of this thread explains what I am looking for. I am curious to know what the syntax is for skipping multiple rows; I can't seem to find such information anywhere.

Original source