📜  如何使用 numpy 在Python读取数字数据或文件?(1)

📅  最后修改于: 2023-12-03 15:38:05.349000             🧑  作者: Mango

如何使用 numpy 在 Python 读取数字数据或文件?

NumPy 是用于科学计算的 Python 库,它将 Python 与 C 语言库相结合,提供了高效的数组操作。在 NumPy 中,可以使用 numpy.loadtxt() 和 numpy.genfromtxt() 函数从文本文件中读取数据。

numpy.loadtxt()

numpy.loadtxt() 函数可用于从文本文件中读取数据,并返回一个 NumPy 数组。

语法
numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, \
            converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, \
            encoding='bytes', max_rows=None)
参数
  • fname: 文件、文件名或生成器的名称。
  • dtype: 返回数组的数据类型。
  • delimiter: 用于分隔字段的字符串。
  • skiprows: 要跳过的行数(从文件的开头)。
  • usecols: 要读取的列。
示例

假设我们有以下数据文件 test.txt:

1,2,3,4
5,6,7,8
9,10,11,12

我们可以使用 numpy.loadtxt() 来读取这个文件:

import numpy as np

data = np.loadtxt("test.txt", delimiter=",")
print(data)

输出:

[[ 1.  2.  3.  4.]
 [ 5.  6.  7.  8.]
 [ 9. 10. 11. 12.]]
numpy.genfromtxt()

numpy.genfromtxt() 函数提供了更多参数,可以更好地处理缺失值等情况。

语法
numpy.genfromtxt(fname, dtype=<class 'numpy.float64'>, comments='#', delimiter=None, \
                skip_header=0, skip_footer=0, converters=None, missing_values=None, \
                filling_values=None, usecols=None, names=None, excludelist=None, \
                deletechars=" !#$%&'()*+, -./:;<=>?@[\]^{|}~", replace_space='_', \
                autostrip=False, case_sensitive=True, defaultfmt="f%i", unpack=None, \
                usemask=False, loose=True, invalid_raise=True, max_rows=None, \
                encoding='bytes')
参数
  • fname: 文件名或文件。
  • dtype: 返回数组的数据类型。
  • delimiter: 用于分隔字段的字符串。
  • skip_header: 要跳过的头部行数。
  • skip_footer: 要跳过的尾部行数。
  • usecols: 要读取的列。
  • names: 字段名列表。
  • missing_values: 将被视为缺失值的字符串列表。
  • filling_values: 缺失值用于填充数组中的数据。
  • deletechars: 要从文件中删除的字符集。
  • replace_space: 将空格替换为指定字符。
  • unpack: 如果为真,则返回的数组将被解包(默认为假)。
  • usemask: 如果为真,则返回一个掩码数组,其值为 True 的位置表示缺失值(默认为假)。
示例

假设我们有以下数据文件 test.csv:

1,2,3,4
5,,7,8
9,10,,12

我们可以使用 numpy.genfromtxt() 来读取这个文件:

import numpy as np

data = np.genfromtxt("test.csv", delimiter=",", names=True, dtype=None, \
                    encoding=None, filling_values=np.nan)
print(data)

输出:

[(1,  2.,  3.,  4.) (5, nan,  7.,  8.) (9, 10., nan, 12.)]

在这个示例中,我们将 filling_values 设置为 np.nan,以便 NumPy 可以识别缺失值。通过将 names 设置为 True 和 dtype 设置为 None,我们还可以使用字段名称来引用数组的列。