numpy多维数据存取

本文总结了numpy的文件操作,包括a.tofile()和np.fromfile()用于生成序列或二进制文件,以及np.save()和np.load()进行便捷的二进制存储与读取。tofile()生成的文件不含维度信息,需要额外存储元数据,而np.save()方法能保存维度和数据类型。在处理大规模数据时,合理选择存储方法至关重要。

本文的主要内容是基于中国大学mooc(慕课)中的“Python数据分析与可视化”课程进行整理和总结。

a.tofile()和np.fromfile()

a.tofile(frame,sep=’’,format=’%s’)
frame:文件或者字符串;
sep:数据分割字符串,如果是空串,写入文件为二进制;
format:写入文件的格式;

a = np.arange(100).reshape(5,10,2)
a.tofile('b.dat',sep=',',format='%d')

在这里插入图片描述
可以看到生成的是由“,”分隔的序列文件,与CSV不同,该文件不包含任何的维度信息,只是将数组中的所有元素逐一列出,并输出到这个文件中,若不指定分隔符,会得到什么样的结果呢?

a = np.arange(100).reshape(5,10,2)
a.tofile('c.dat',format='%.1f')

在这里插入图片描述
此时生成的是二进制格式文件,打开后无法使用文本编辑器看懂,事实上,二进制文件会比文本文件占用更少的空间,此时可将二进制文件作为数据备份的一种方式。

如何从文本文件或者二进制文件中还原一个Numpy数组呢?可以

NumPy是一个强大的Python库,主要用于科学计算。它提供了一个高性能的多维数组对象ndarray以及用于操作这些数组的工具。下面我们将详细介绍如何使用NumPy进行数据存取。 ### 使用`numpy.save`保存单个数组文件 ```python import numpy as np # 创建一个示例数组 data = np.array([[1, 2], [3, 4]]) # 将数组保存为 .npy 文件 np.save('example.npy', data) ``` 通过以上代码片段可以看到我们创建了一组简单的二维数组,并将其保存了名为 `example.npy` 的二进制文件。这种格式非常适合快速读写大型数值型数据集并且保持良好的性能特点。 ### 加载已存储的数据 当需要从 `.npy` 文件加载之前保存过的 NumPy 数组时可以这样做: ```python loaded_data = np.load('example.npy') print(loaded_data) # 输出应显示相同的矩阵 [[1 2] # [3 4]] ``` 如果想要将多个数组一起打包一个`.npz`压缩包的形式,则可通过以下方式进行处理: #### 存储多个数组至单一归档文件(.npz) ```python a = np.arange(5) b = np.linspace(0., 2.*np.pi, 6) # 把两个数组作为关键字参数传入,键名即为它们将在档案中的名称。 np.savez("arrays.npz", a=a, b=b) ``` 此时会生一个新的压缩文件叫做"arrays.npz". 为了恢复这个压缩文档里的所有内容你需要做的是这样的: ```python archive = np.load('arrays.npz') for key in archive.files: print(f"{key}: {archive[key]}") ``` 除了上述提到的方式外,还可以直接利用文本形式来进行简单的小规模数字列表交换如 CSV 或者 TSV 等常用表格结构化信息载体也都是可行的选择之一。 对于文本文件(例如CSV),你可以选择使用`genfromtxt()`或`loadtxt()`, 它们都能很好地应对这类任务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值