如何用NumPy读取CSV文件

  • Post category:Python

下面是使用NumPy读取CSV文件的详细攻略:

1. 导入NumPy库

在使用NumPy读取CSV文件之前,需要先导入NumPy库。可以通过以下代码进行导入:

import numpy as np

2. 使用NumPy读取CSV文件

在导入NumPy库之后,就可以开始使用NumPy读取CSV文件了。使用NumPy读取CSV文件的主要函数是numpy.loadtxt()函数。该函数可以从文本文件中读取数据,并将其存储为NumPy数组。

下面是numpy.loadtxt()函数的基本用法:

np.loadtxt(fname, dtype=<class 'float'>, delimiter=None, skiprows=0, usecols=None, unpack=False)

各参数说明如下:

  • fname:要读取的文件名或路径;
  • dtype:返回数组的数据类型,默认为float
  • delimiter:分隔符,默认为空格;
  • skiprows:跳过前多少行,默认为0
  • usecols:指定要读取的列数,默认为None,表示读取全部列;
  • unpack:如果为True,结果会被解压成多个数组,否则返回一个数组。

下面是一个简单的示例,展示如何使用NumPy读取名为data.csv的CSV文件,并将其存储为NumPy数组:

import numpy as np

# 读取CSV文件
data = np.loadtxt('data.csv', delimiter=',')

# 打印读取的数据
print(data)

在上面的代码中,delimiter=','指定了CSV文件的分隔符为逗号。

3. 使用NumPy读取具有不同数据类型的CSV文件

在前面的示例中,我们假设CSV文件中的所有数据都是浮点数。但实际上,CSV文件中可能包含不同类型的数据,例如字符串、整数等。为了读取这类文件,我们需要使用numpy.genfromtxt()函数。

下面是numpy.genfromtxt()函数的基本用法:

np.genfromtxt(fname, dtype=<class 'float'>, delimiter=None, skip_header=0, usecols=None, names=True, missing_values=None, filling_values=None, encoding='bytes', max_rows=None)

各参数说明如下:

  • fname:要读取的文件名或路径;
  • dtype:返回数组的数据类型,默认为float
  • delimiter:分隔符,默认为空格;
  • skip_header:跳过前多少行,默认为0
  • usecols:指定要读取的列数,默认为None,表示读取全部列;
  • names:如果为True,将第一行视为列名,并将其存储为结构化数组;
  • missing_values:指定缺失值的字符串;
  • filling_values:用于替换缺失值的默认值;
  • encoding:指定文件编码,默认为bytes
  • max_rows:最大读取行数。

下面是一个示例,展示如何使用NumPy读取名为data_with_types.csv的CSV文件,并将其存储为结构化数组:

import numpy as np

# 定义数据类型
dtype = np.dtype([('name', 'S20'), ('age', int), ('salary', float)])

# 读取CSV文件
data = np.genfromtxt('data_with_types.csv', delimiter=',', dtype=dtype, names=True, skip_header=1)

# 打印读取的数据
print(data)

在上面的代码中,我们使用numpy.dtype()函数定义了一个由nameagesalary三个字段组成的数据类型。dtype=dtypes参数将该数据类型传递给numpy.genfromtxt()函数,从而为读取的CSV文件创建了结构化数组。names=True参数指示函数将读取CSV文件的第一行,并将其存储为结构化数组的字段名。skip_header=1参数表示跳过CSV文件的第一行。

以上是使用NumPy读取CSV文件的详细攻略。希望这能够帮助你成功读取CSV文件。