首页 > 编程语言 >Python numpy 入门系列 21 文件

Python numpy 入门系列 21 文件

时间:2024-11-02 19:42:38浏览次数:4  
标签:文件 21 Python NumPy 数组 np CSV numpy 读取

Python numpy 入门系列 21 文件

 

1 NumPy 数组的二进制存取
NumPy 提供了专门的函数 save() 和 load(),用来保存和读取 NumPy 数组的二进制文件。这种方式高效且适合大规模数据的存储。


1.1 保存数组为二进制文件
save() 函数将 NumPy 数组保存为 .npy 格式的文件。该格式存储的是数组的二进制数据,读取和写入速度较快。

import numpy as np

# 创建一个数组
arr = np.array([1, 2, 3, 4, 5])

# 将数组保存为二进制文件
np.save('array.npy', arr)
print("数组已保存为 'array.npy'")


1.2 从二进制文件读取数组
使用 load() 函数可以将之前保存的 .npy 文件读取回 NumPy 数组。

import numpy as np
# 从二进制文件读取数组 loaded_arr = np.load('array.npy') print("从文件读取的数组:", loaded_arr)

 
1.3 保存和读取多个数组
当需要保存多个数组时,NumPy 提供了 savez() 函数,可以将多个数组保存到一个压缩文件中,并使用键值对的形式进行访问。

import numpy as np
# 保存多个数组到一个文件 arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) np.savez('arrays.npz', array1=arr1, array2=arr2) print("多个数组已保存为 'arrays.npz' 文件") # 从文件读取多个数组 data = np.load('arrays.npz') print("从文件读取的数组1:", data['array1']) print("从文件读取的数组2:", data['array2'])

  
2 NumPy 与文本文件操作
除了二进制文件,文本文件也是非常常用的数据存储方式,尤其是 CSV(Comma-Separated Values,逗号分隔值)文件。NumPy 提供了 savetxt() 和 loadtxt() 函数,用于处理文本文件。


2.1 保存数组为文本文件
np.savetxt() 函数允许将数组保存为文本文件,可以指定分隔符(如逗号、空格等),适合导出数据供人类阅读或用于外部工具处理。

import numpy as np
# 创建二维数组 arr = np.array([[1.5, 2.3, 3.1], [4.5, 5.2, 6.8]]) # 将数组保存为文本文件,使用逗号分隔 np.savetxt('array.txt', arr, delimiter=',') print("数组已保存为 'array.txt'")

 


2.2 从文本文件读取数组
使用 np.loadtxt() 可以从文本文件中读取数据,并将其转换为 NumPy 数组。这个函数非常适合读取格式化的表格数据。

import numpy as np
# 从文本文件读取数组 loaded_txt_arr = np.loadtxt('array.txt', delimiter=',') print("从文本文件读取的数组:\n", loaded_txt_arr)

 
2.3 CSV 文件的读写
CSV 文件是常见的数据存储格式,尤其在数据分析和机器学习领域。savetxt() 和 loadtxt() 也可以用来处理 CSV 文件。

import numpy as np
# 保存数组为 CSV 文件 np.savetxt('array.csv', arr, delimiter=',', header='Col1,Col2,Col3') print("数组已保存为 'array.csv'") # 从 CSV 文件读取数组 loaded_csv_arr = np.loadtxt('array.csv', delimiter=',', skiprows=1) print("从 CSV 文件读取的数组:\n", loaded_csv_arr)

  

3 使用 genfromtxt() 读取含缺失数据的文件
在实际的数据处理中,文本文件可能包含缺失数据(例如某些列或行为空值)。genfromtxt() 函数是一个更强大的函数,它能够处理这些缺失数据并自动将其转为指定的缺失值。


3.1 读取含缺失数据的文件

import numpy as np
# 从含有缺失值的文件读取数据 data_with_missing = np.genfromtxt('missing_data.csv', delimiter=',', filling_values=-999) print("处理缺失值的数据:\n", data_with_missing)

     
在此示例中,filling_values=-999 参数将缺失值替换为 -999。我们也可以通过 dtype 参数指定不同的数据类型。


4 使用 Pandas 和 NumPy 协同处理文件

虽然 NumPy 能够处理文本和二进制文件,但在处理大型数据集和复杂的 CSV 文件时,Pandas 提供了更强大的功能。Pandas 数据结构(如 DataFrame)与 NumPy 数组之间可以相互转换。


4.1 使用 Pandas 读取 CSV 文件
Pandas 提供了 read_csv() 函数来读取 CSV 文件,并且可以直接将其转换为 NumPy 数组。

import numpy as np
import pandas as pd # 使用 Pandas 读取 CSV 文件 df = pd.read_csv('data.csv') # 将 Pandas DataFrame 转换为 NumPy 数组 np_array = df.to_numpy() print("转换为 NumPy 数组:\n", np_array)

 
4.2 将 NumPy 数组保存为 CSV 文件
Pandas 也可以将 NumPy 数组转换为 DataFrame,然后保存为 CSV 文件。

import numpy as np
# 将 NumPy 数组转换为 DataFrame 并保存为 CSV 文件 df = pd.DataFrame(arr) df.to_csv('saved_data.csv', index=False) print("NumPy 数组已保存为 CSV 文件")

 


REF
https://zhuanlan.zhihu.com/p/1107698156
https://download.csdn.net/blog/column/11191307/119647570
https://www.jianshu.com/p/f114783a0a54
原文链接:https://blog.csdn.net/imdeity/article/details/141942153

标签:文件,21,Python,NumPy,数组,np,CSV,numpy,读取
From: https://www.cnblogs.com/emanlee/p/18522365

相关文章

  • virtualenv管理Python环境
    管理Python环境修改pip镜像mkdir-p~/.config/pipnano~/.config/pip/pip.conf[global]index-url=https://pypi.tuna.tsinghua.edu.cn/simplevirtualenvpipinstallvirtualenv#准备目录并进入mkdir-p/home/max/.envs#创建虚拟环境(按默认的Python版本)virtual......
  • python+flask计算机毕业设计高校图书馆借阅系统后台(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于高校图书馆借阅系统后台的研究,现有研究主要集中在图书馆借阅系统的整体架构与前端功能开发方面12。专门针对高校图书馆借阅系统后......
  • Python基础学习(十一)面向对象编程(进阶)
    代码获取:https://github.com/qingxuly/hsp_python_course完结版:Python基础学习(完结版)面向对象编程(进阶)面向对象编程三大特征面向对象编程有三大特征:封装、继承、多态。面向对象编程—封装封装介绍封装(encapsulation)就是把抽象出的数据[属性]和对数据的操作[方法]......
  • Python基础学习(十)面向对象编程(基础)
    代码获取:https://github.com/qingxuly/hsp_python_course完结版:Python基础学习(完结版)面向对象编程(基础)类与对象类与实例的关系类与实例的关系示意图快速入门—面向对象的方式解决养猫问题#定义一个猫类,age,name,color是属性,或者称为成员变量#Cat类就是你......
  • Java 虚拟线程:高并发编程的新纪元(Java 21)
    Java虚拟线程:高并发编程的新纪元前言在现代软件开发中,高并发编程一直是一个具有挑战性的问题。传统的线程模型虽然强大,但在高并发场景下会引发性能瓶颈和资源耗尽等问题。为了应对这些挑战,Java引入了虚拟线程(VirtualThreads),它为高并发编程带来了全新的解决方案。虚拟......
  • 推荐5个超级实用的 Python 模块,不知道就out啦!
    正文Python标准库有超过200个模块,程序员可以在他们的程序中导入和使用。虽然普通程序员对其中许多模块都有一些经验,但很可能有一些好用的模块他们仍然没有注意到。我发现其中许多模块都包含了在各个领域都非常有用的函数。比较数据集、协作其他函数以及音频处理等都可以仅......
  • NOIP2024模拟赛21
    省流:没过T1,玩了1h俄罗斯,不好评价。还好T3一个小时写完了平方暴力,还没菜到离谱,感觉这才是一个正常的分数。但是好像正解要不到1h?T2的dp优化是我弱项,做不出正常,spdarkle是真逆天。怎么一眼的怎么一眼的怎么一眼的怎么一眼的怎么一眼的怎么一眼的怎么一眼的。发现后面又......
  • [python]Gunicorn加持,轻松提升Flask超7倍性能
    前言之前学习和实际生产环境的flask都是用app.run()的默认方式启动的,因为只是公司内部服务,请求量不高,一直也没出过什么性能问题。最近接管其它小组的服务时,发现他们的服务使用Gunicorn+Flask的方式运行的,本地开发用的gevent的WSGIServer。对于Gunicorn之前只是耳闻,没实际用过,正......
  • PyCharm 2024.1 解锁版 (Python集成开发IDE)详细安装步骤
    分享文件:PyCharm2024.1解锁版(Python集成开发IDE)链接:https://pan.xunlei.com/s/VOAa_CiVVvZnyQgLfpmCIOABA1提取码:cx4h安装步骤1、下载解压后点击如下进行安装2、选择安装路径3、默认勾选将PyCharm创建桌面快捷方式4、默认,点击【安装】5、安装中,耐心等待2-5分......
  • Python自动化运维:技能掌握与快速入门指南
    #编程小白如何成为大神?大学生的最佳入门攻略#在当今快速发展的IT行业中,Python自动化运维已经成为了一个不可或缺的技能。本文将为您详细介绍Python自动化运维所需的技能,并提供快速入门的资源,帮助您迅速掌握这一领域。必备软件工具1.Python与PyCharmPython和PyCharm是自动......