关键词

NumPy保存、加载文本格式文件的两个方法

NumPy中提供了多种方法来保存和加载文本格式的数据,包括CSV、TXT、TSV等格式。

最常用的保存文本格式文件的方法为:np.savetxt()。np.savetxt()可以将NumPy数组保存为CSV、TXT、TSV等格式的文件。

最常用的加载文本格式文件的方法为:np.genfromtxt()。np.genfromtxt()则可以从文本格式的文件中读取数据并创建NumPy数组。

下面分别介绍这两种方法的使用。

np.savetxt()

np.savetxt()方法可以将一个NumPy数组保存为CSV、TXT、TSV等格式的文件。它的语法如下:

np.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ', encoding=None)

其中,参数的含义如下:

  • fname:要保存的文件名(包括路径)。
  • X:要保存的NumPy数组。
  • fmt:指定数据的格式,默认为'%.18e',即18位小数的科学计数法。
  • delimiter:指定分隔符,默认为一个空格。
  • newline:指定换行符,默认为\n。
  • header:文件头(第一行)的文本内容,默认为空字符串。
  • footer:文件尾(最后一行)的文本内容,默认为空字符串。
  • comments:注释符号,默认为'# ',即一个井号加一个空格。
  • encoding:指定文件的编码格式,默认为None,即使用系统默认编码。

面是一个保存CSV格式文件的例子:

import numpy as np

# 创建一个3行4列的二维数组
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])

# 保存为CSV格式文件
np.savetxt('data.csv', arr, delimiter=',')

执行后,会在当前目录下生成一个名为data.csv的文件,文件内容如下:

1.000000000000000000e+00,2.000000000000000000e+00,3.000000000000000000e+00,4.000000000000000000e+00
5.000000000000000000e+00,6.000000000000000000e+00,7.000000000000000000e+00,8.000000000000000000e+00
9.000000000000000000e+00,1.000000000000000000e+01,1.100000000000000000e+01,1.200000000000000000e+01

可以看到,每行数据使用逗号分隔。

np.genfromtxt()

np.genfromtxt()方法可以从文本格式的文件中读取数据并创建NumPy数组。它的语法如下:

np.genfromtxt(fname, dtype=None, delimiter=None, skip_header=0, skip_footer=0, usecols=None, unpack=False, ndmin=0)

参数涵义说明:

  • fname:要加载的文件名,可以是字符串、文件对象或类似对象。
  • dtype:返回数组的数据类型,默认为None,自动推断数据类型。
  • delimiter:分隔符,默认为None,自动识别分隔符。
  • skip_header:要跳过的行数,默认为0。
  • skip_footer:要跳过的末尾行数,默认为0。
  • usecols:要加载的列数,默认为None,加载所有列。
  • unpack:如果为True,则返回数组的转置,即可以将每一列单独返回。
  • ndmin:返回数组的最小维度,默认为0。

下面是一个简单的示例:

import numpy as np

# 从文本文件中加载数据
data = np.genfromtxt('data.txt', delimiter=',')

print(data)

其中,假设我们有一个名为data.txt的文本文件,它的内容如下:

1,2,3
4,5,6
7,8,9

运行上述代码,输出结果如下:

array([[1., 2., 3.],
       [4., 5., 6.],
       [7., 8., 9.]])

可以看到,np.genfromtxt()函数已经成功地加载了文本文件中的数据,并返回了一个NumPy数组。在这个例子中,由于没有指定dtype参数,函数自动推断数据类型为float。分隔符也被自动识别为逗号。

其他方法

除以上两种最常用的保存和加载方法外,Numpy还提供了以下两种文本格式文件的保存和加载方法:

TXT文件

使用Numpy的loadtxt()函数可以读取TXT格式的文件。同样的,使用savetxt()函数可以保存数组到TXT文件中。示例代码如下:

import numpy as np

# 从TXT文件读取数据
data = np.loadtxt('data.txt')

# 将数组保存到TXT文件
np.savetxt('output.txt', data)

JSON文件

使用Numpy的load()函数和dump()函数可以读取和保存JSON格式的文件。需要注意的是,Numpy的load()函数会将JSON文件中的数组转换为Numpy数组。示例代码如下:

import numpy as np
import json

# 从JSON文件读取数据
with open('data.json', 'r') as f:
    data_dict = json.load(f)
data = np.array(data_dict['data'])

# 将数组保存到JSON文件
data_dict = {'data': data.tolist()}
with open('output.json', 'w') as f:
    json.dump(data_dict, f)

需要注意的是,以上方法只适用于纯文本格式的文件,如果需要保存二进制格式的数据,可以使用Numpy的save()函数和load()函数。具体使用方法可以参考前面提到的示例代码。

本文链接:http://task.lmcjl.com/news/4257.html

展开阅读全文