How do I read CSV data into a record array in NumPy?

后端 未结 11 1300
广开言路
广开言路 2020-11-22 02:55

I wonder if there is a direct way to import the contents of a CSV file into a record array, much in the way that R\'s read.table(), read.delim(), a

11条回答
  •  你的背包
    2020-11-22 03:47

    I would recommend the read_csv function from the pandas library:

    import pandas as pd
    df=pd.read_csv('myfile.csv', sep=',',header=None)
    df.values
    array([[ 1. ,  2. ,  3. ],
           [ 4. ,  5.5,  6. ]])
    

    This gives a pandas DataFrame - allowing many useful data manipulation functions which are not directly available with numpy record arrays.

    DataFrame is a 2-dimensional labeled data structure with columns of potentially different types. You can think of it like a spreadsheet or SQL table...


    I would also recommend genfromtxt. However, since the question asks for a record array, as opposed to a normal array, the dtype=None parameter needs to be added to the genfromtxt call:

    Given an input file, myfile.csv:

    1.0, 2, 3
    4, 5.5, 6
    
    import numpy as np
    np.genfromtxt('myfile.csv',delimiter=',')
    

    gives an array:

    array([[ 1. ,  2. ,  3. ],
           [ 4. ,  5.5,  6. ]])
    

    and

    np.genfromtxt('myfile.csv',delimiter=',',dtype=None)
    

    gives a record array:

    array([(1.0, 2.0, 3), (4.0, 5.5, 6)], 
          dtype=[('f0', '

    This has the advantage that file with multiple data types (including strings) can be easily imported.

提交回复
热议问题