numpy del recfromcsv salta a la primera línea de mis datos. (Lo mismo para genfromtxt)

import numpy as np

filename = 'data.csv'
writer = open(filename,mode='w')
writer.write('0,1.1,1.2\n1,2.1,2.2\n2,3.1,3.2')
writer.close()

data = np.recfromcsv(filename)
print data

Es esto un error, o ¿cómo puedo cargar los datos sin perder la primera línea?

InformationsquelleAutor det | 2012-10-15

3 Comentarios

  1. 3

    De forma predeterminada la primera línea de un archivo csv que contiene los nombres de campo.
    La función recfromcsv invocar genfromtxt con los parámetros de names=True como predeterminado. Esto significa que se lea la primera línea de los datos del encabezado.

    Definición:
    http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html

    Usted debe escribir antes de que la matriz.

    import numpy as np
    
    filename = 'data.csv'
    writer = open(filename,mode='w')
    writer.write('first column,second column,third column\n')
    writer.write('0,1.1,1.2\n1,2.1,2.2\n2,3.1,3.2')
    writer.close()
    
    data = np.recfromcsv(filename)
    print data

    O uso recfromtxt en lugar de recfromcsv.

    O sobrescribir el nombre predeterminado como

    recfromcsv(filename, names=['a','a','a'])
    • En mi caso el formato de archivo de datos es fijo, pero dando nombres hace el truco. (…tenga en cuenta que usted tiene un juego extra de comillas en el código: debe ser recfromcsv(nombre de archivo, nombres=[‘a’,’a’,’a’])
    • Uy, tipo de…. Gracias 🙂
  2. 1

    El comportamiento predeterminado de recfromcsv es leer una fila de encabezado, que es la razón por la que la omisión de la primera fila. A mí me funciona con genfromtxt (si me pasan delimiter=','). Puede usted proporcionar la salida que muestra cómo genfromtxt falla?

    Por desgracia, parece que hay un error en Numpy que no permiten especificar la dtype en recfromcsv (ver https://github.com/numpy/numpy/issues/311), así que no veo cómo leer con especifican los nombres de columna, que creo que es lo que usted necesita hacer para evitar la lectura de la línea de encabezado. Pero usted puede leer los datos con genfromtxt.

    Edit: parece Que se puede leer en apenas pasando en una lista de nombres:

    np.recfromcsv(filename, delimiter=',', names=['a', 'b', 'c'])

    (La razón por la que no estaba funcionando para mí es que se me había hecho from __future__ import unicode_literals y al parecer no le gusta unicode en dtypes.)

    • Y si usted desea guardar el resultado como una matriz estructurada con int para el primer volumn y flotante para el resto de las columnas que puede obtener de recfromcsv, usted también puede especificar la palabra clave dtype=None
    • Gracias – sí, añadiendo nombres=… hace el truco

Dejar respuesta

Please enter your comment!
Please enter your name here