当前位置: 首页 > news >正文

Python NumPy 读取与保存数据:高效处理数据文件

Python NumPy 读取与保存数据:高效处理数据文件

文章目录

  • Python NumPy 读取与保存数据:高效处理数据文件
      • 一 主要涉及功能
      • 二 数据读取
        • 1 常规读取
        • 2 numpy 读取
          • 方法参数详解
        • 3 读字符串
          • 方法参数详解
      • 三 保存数据
        • 1 保存为文本格式
        • 2 保存二进制文件
        • 3 一个文件保存多个 array
        • 4 数据压缩
      • 四 完整代码示例
      • 五 源码地址

本文详细介绍了如何使用 Python 的 NumPy 库读取与保存不同格式的数据。通过 np.loadtxtnp.fromstring 等方法读取 CSV 文件及字符串数据,并利用 np.savetxtnp.savenp.savez 将数据保存为文本、二进制或压缩格式。文章还解释了每个函数的关键参数及其作用,帮助你更好地掌握数据处理的基本操作。通过这些操作,你可以实现高效的数据加载与存储,并且能够灵活地选择数据的存储格式,适应不同的项目需求。

导入 numpy 库

import numpy as np

一 主要涉及功能

加载常用数据格式保存数据
np.loadtxt(), np.fromstring()np.savetxt()
np.save(), np.savez(), np.savez_compressed()

二 数据读取

1 常规读取

导入 os 库

import os
print("data file in directory:", os.listdir("csv"))
with open("csv/data.csv", "r") as f:print("\n", f.read())
2 numpy 读取
import numpy as np
data = np.loadtxt("csv/data.csv", delimiter=",", skiprows=1, dtype=np.int64)
print(data)
方法参数详解

np.loadtxt("csv/data.csv", delimiter=",", skiprows=1, dtype=np.int64)

  • "csv/data.csv": 这是你想要读取的文件的路径。文件需要位于执行 Python 脚本的同一目录中的 csv 文件夹下,或者提供正确的相对或绝对路径。

  • delimiter=",": 指定数据在文件中的分隔符。在 CSV 文件中,列通常是由逗号分隔的,所以这里使用逗号作为分隔符。

  • skiprows=1: 这个参数指示 loadtxt 函数跳过文件的第一行。这通常用于跳过包含列标题的行。

  • dtype=np.int64: 指定加载数据的数据类型。np.int64 是一种整数类型,表示每个数值将被读取并存储为 64 位整数。

这些参数合起来使得 np.loadtxt 函数能够正确地从 CSV 文件读取数值数据,跳过标题行,并将所有数据元素解析为整数。

3 读字符串
row_string = "20131, 10, 67, 20132, 11, 88, 20133, 12, 98, 20134, 8, 100, 20135, 9, 75, 20136, 12, 78"
data = np.fromstring(row_string, dtype=np.int64, sep=",")
data = data.reshape(6, 3)
print("data ", data)
方法参数详解

np.fromstring(row_string, dtype=np.int64, sep=",")

  • row_string: 这是要解析的数据字符串,假定其中包含了以逗号分隔的数字。你需要确保 row_string 已经定义且格式正确,例如 "1,2,3,4"

  • dtype=np.int64: 指定解析数据的数据类型。在这里,np.int64 表示每个解析出的数值将被存储为 64 位整数。

  • sep=",": 指定数据在字符串中的分隔符。这里使用逗号,因为它是 CSV 数据中常见的分隔符。

np.fromstring 函数会根据指定的分隔符将字符串分割为多个元素,然后根据指定的数据类型将这些字符串转换成数字。

三 保存数据

1 保存为文本格式
# 保存为文本格式
print("numpy data:\n", data)
np.savetxt("csv/save_data.csv", data, delimiter=",", fmt='%s')print("data file in directory:", os.listdir("csv"))
with open("csv/save_data.csv", "r") as f:print("\n", f.read())
2 保存二进制文件

np.save() 保存一个以 .npy 结尾的二进制文件,读取时使用 np.load() 加载这个二进制数据文件。

    np.save("csv/save_data_10.npy", data)print("data file in directory:", os.listdir("csv"))npy_data = np.load("csv/save_data_10.npy")print(npy_data)
3 一个文件保存多个 array

np.savez() 保存 .npz 文件将这多个 array 同时存储。

train_data = np.array([1, 2, 3])
test_data = np.array([11, 22, 33])np.savez("csv/save_data_02.npz", train=train_data, test=test_data)
print("data file in directory:", os.listdir("csv"))npz_data = np.load("csv/save_data_02.npz")
print("train:", npz_data["train"])
print("test:", npz_data["test"])
4 数据压缩

使用 np.savez_compressed() 压缩数据

np.savez_compressed("csv/save_data_compressed.npz", train=train_data, test=test_data)
print("data file in directory:", os.listdir("csv"))npz_data_compressed = np.load("csv/save_data_compressed.npz")
print("train:", npz_data_compressed["train"])
print("test:", npz_data_compressed["test"])print("compressed file size:", os.path.getsize("csv/save_data_compressed.npz"))
print("original file size:", os.path.getsize("csv/save_data_02.npz"))

四 完整代码示例

# This is a sample Python script.# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
import os
import numpy as npdef print_hi(name):# Use a breakpoint in the code line below to debug your script.print(f'Hi, {name}')  # Press ⌘F8 to toggle the breakpoint.# 加载常用数据格式# 常规方法读 osprint("data file in directory:", os.listdir("csv"))with open("csv/data.csv", "r") as f:print("\n", f.read())# 使用 numpy 读data = np.loadtxt("csv/data.csv", delimiter=",", skiprows=1, dtype=np.int64)print(data)# 读字符串row_string = "20131, 10, 67, 20132, 11, 88, 20133, 12, 98, 20134, 8, 100, 20135, 9, 75, 20136, 12, 78"data = np.fromstring(row_string, dtype=np.int64, sep=",")data = data.reshape(6, 3)print("data ", data)# 保存数据# 保存为文本格式print("numpy data:\n", data)np.savetxt("csv/save_data.csv", data, delimiter=",", fmt='%s')print("data file in directory:", os.listdir("csv"))with open("csv/save_data.csv", "r") as f:print("\n", f.read())# 保存二进制文件# np.save()# 来保存,保存的是一个以.npy# 结尾的二进制文件。加载的时候,我们能用# np.load()# 直接加载这个二进制数据文件。np.save("csv/save_data_10.npy", data)print("data file in directory:", os.listdir("csv"))npy_data = np.load("csv/save_data_10.npy")print(npy_data)# 分开多个 array 来存放,一个 numpy 文件中保存多个 numpy arraytrain_data = np.array([1, 2, 3])test_data = np.array([11, 22, 33])np.savez("csv/save_data_02.npz", train=train_data, test=test_data)print("data file in directory:", os.listdir("csv"))npz_data = np.load("csv/save_data_02.npz")print("train:", npz_data["train"])print("test:", npz_data["test"])# np.savez_compressed() 数据压缩print()np.savez_compressed("csv/save_data_compressed.npz", train=train_data, test=test_data)print("data file in directory:", os.listdir("csv"))npz_data_compressed = np.load("csv/save_data_compressed.npz")print("train:", npz_data_compressed["train"])print("test:", npz_data_compressed["test"])print("compressed file size:", os.path.getsize("csv/save_data_compressed.npz"))print("original file size:", os.path.getsize("csv/save_data_02.npz"))# Press the green button in the gutter to run the script.
if __name__ == '__main__':print_hi('读取保存数据')# See PyCharm help at https://www.jetbrains.com/help/pycharm/

复制粘贴并覆盖到你的 main.py 中运行,运行结果如下。

Hi, 读取保存数据
data file in directory: ['save_data_compressed.npz', 'your_data.csv', 'save_data_02.npz', 'data.csv', 'save_data.csv', 'save_data_10.npy']# StudentID, Age, Score
20131,10,67
20132,11,88
20133,12,98
20134,8,100
20135,9,75
20136,12,78
[[20131    10    67][20132    11    88][20133    12    98][20134     8   100][20135     9    75][20136    12    78]]
data  [[20131    10    67][20132    11    88][20133    12    98][20134     8   100][20135     9    75][20136    12    78]]
numpy data:[[20131    10    67][20132    11    88][20133    12    98][20134     8   100][20135     9    75][20136    12    78]]
data file in directory: ['save_data_compressed.npz', 'your_data.csv', 'save_data_02.npz', 'data.csv', 'save_data.csv', 'save_data_10.npy']20131,10,67
20132,11,88
20133,12,98
20134,8,100
20135,9,75
20136,12,78data file in directory: ['save_data_compressed.npz', 'your_data.csv', 'save_data_02.npz', 'data.csv', 'save_data.csv', 'save_data_10.npy']
[[20131    10    67][20132    11    88][20133    12    98][20134     8   100][20135     9    75][20136    12    78]]
data file in directory: ['save_data_compressed.npz', 'your_data.csv', 'save_data_02.npz', 'data.csv', 'save_data.csv', 'save_data_10.npy']
train: [1 2 3]
test: [11 22 33]data file in directory: ['save_data_compressed.npz', 'your_data.csv', 'save_data_02.npz', 'data.csv', 'save_data.csv', 'save_data_10.npy']
train: [1 2 3]
test: [11 22 33]
compressed file size: 402
original file size: 552

五 源码地址

代码地址:

国内看 Gitee 之 numpy/读取保存数据.py

国外看 GitHub 之 numpy/读取保存数据.py

引用 莫烦 Python


http://www.mrgr.cn/news/39197.html

相关文章:

  • 九块九付费进群系统 wxselect SQL注入漏洞
  • Foo a30 = Foo(123);会调用哪些构造函数
  • 第十四周学习周报
  • 先刮腻子还是先装柜子好呢?
  • 系统数据文件和信息
  • 从传统 RAG 到图 RAG,赋予大型语言模型更强大的知识力量
  • Unity3D 创建一个人物,实现人物的移动
  • C++中的多态(详细讲解)
  • 【Android 14源码分析】Activity启动流程-1
  • CO-DETR追踪损失函数情况
  • 谷歌收录批量查询,如何批量查询谷歌收录以及提交网站进行收录的方法
  • 服务器开通个人账户
  • 初识Linux以及Linux的基本命令
  • UFS 3.1架构简介
  • 关于git分支冲突问题
  • Dynamics 365 dependency EntityType
  • 古代帝王与啤酒的不解之缘
  • 如果MySQL已经安装但mysql --version命令不好用,怎么办?
  • MySQL的驱动安装
  • Python——内置字符串操作与转换函数