numpy loadtxt saltar primera fila

Tengo un pequeño problema cuando bash importar datos de archivos CSV con la función loadtxt de numpy. Aquí hay una muestra del tipo de archivos de datos que tengo.

Llámelo ‘datafile1.csv‘:

# Comment 1 # Comment 2 x,y,z 1,2,3 4,5,6 7,8,9 ... ... # End of File Comment 

El guión que pensé que funcionaría para esta situación parece:

 import numpy as np FH = np.loadtxt('datafile1.csv',comments='#',delimiter=',',skiprows=1) 

Pero, estoy recibiendo un error:

 ValueError: could not convert string to float: x 

Esto me dice que el ‘skiprows’ de kwarg no se salta el encabezado, se salta la primera fila de comentarios. Simplemente puedo asegurarme de que skiprows = 3, pero la complicación es que tengo una gran cantidad de archivos, que no necesariamente tienen la misma cantidad de líneas comentadas en la parte superior del archivo. ¿Cómo puedo asegurarme de que cuando uso loadtxt solo obtengo los datos reales en una situación como esta?

PD: estoy abierto a las soluciones de bash, también.

Omitir línea de comentario manualmente utilizando la expresión del generador:

 import numpy as np with open('datafile1.csv') as f: lines = (line for line in f if not line.startswith('#')) FH = np.loadtxt(lines, delimiter=',', skiprows=1) 

Cree su propia función de filtro personalizado, como:

 def skipper(fname): with open(fname) as fin: no_comments = (line for line in fin if not line.lstrip().startswith('#')) next(no_comments, None) # skip header for row in no_comments: yield row a = np.loadtxt(skipper('your_file'), delimiter=',') 
 def skipper(fname, header=False): with open(fname) as fin: no_comments = (line for line in fin if not line.lstrip().startswith('#')) if header: next(no_comments, None) # skip header for row in no_comments: yield row a = np.loadtxt(skipper('your_file'), delimiter=',') 

Esto es solo una pequeña modificación de la respuesta de @Jon Clements al agregar un parámetro opcional “encabezado”, dado que en algunos casos, el archivo csv tiene líneas de comentarios (comienza con #) pero no tiene la fila del encabezado.