【Python篇】python库讲解(pickle | random | numpy)

news2024/9/27 12:14:02

文章目录

  • 🎄pickle模块
    • 🛸样例
  • 🎄random
    • 🛸样例
  • 🎄numpy库
    • 🛸例子

在这里插入图片描述

🎄pickle模块

pickle模块是Python标准库中的一个模块,用于序列化和反序列化Python对象。它可以将Python对象转化为字节流形式,以便于存储或传输,然后在需要时将其还原为原始对象。

pickle模块提供了以下两个主要的函数:

  • pickle.dump(obj, file):将Python对象序列化并写入文件
    obj:要序列化的Python对象。
    file:要写入的文件对象。
  • pickle.load(file):从文件中读取序列化的Python对象并反序列化l1 mm。
    file:要读取的文件对象。

使用pickle模块可以方便地实现对象的持久化存储,或者在进程间传递复杂的数据结构。

🛸样例

编写一个程序,分别将整数a1=100,字符串a2=“I am a student”,列表list1 = [1,2,3,4,5,6],字典dict1 = {“姓名”:“张三”,“毕业学校”:“大学”},集合set1 = {3.5,5,“abc”}用pickle模块写入一个二进制文件中。写入成功后,再次打开文件,读取二进制文件中的数据。
要求:
用try-except语句对写入的过程进行可能出现的异常进行处理。显示写入成功,还是写入失败。

import pickle

# 写入数据到二进制文件
try:
    a1 = 100
    a2 = "I am a student"
    list1 = [1, 2, 3, 4, 5, 6]
    dict1 = {"姓名": "张三", "毕业学校": "河南科技大学"}
    set1 = {3.5, 5, "abc"}

    with open("data.pkl", "wb") as f:
        pickle.dump(a1, f)
        pickle.dump(a2, f)
        pickle.dump(list1, f)
        pickle.dump(dict1, f)
        pickle.dump(set1, f)

    print("写入成功!")
except Exception as e:
    print("写入失败:", e)

# 从二进制文件中读取数据
try:
    with open("data.pkl", "rb") as f:
        a1 = pickle.load(f)
        a2 = pickle.load(f)
        list1 = pickle.load(f)
        dict1 = pickle.load(f)
        set1 = pickle.load(f)

    print("读取成功!")
    print("a1 =", a1)
    print("a2 =", a2)
    print("list1 =", list1)
    print("dict1 =", dict1)
    print("set1 =", set1)
except Exception as e:
    print("读取失败:", e)

在这里插入图片描述

wb和rb是Python中文件打开模式的一部分,用于指定以二进制模式进行文件读写操作。

  • wb:以二进制模式写入文件。在这种模式下,可以将二进制数据(如字节流、图片、音频等)写入文件。如果文件不存在,则会创建一个新文件;如果文件已存在,则会清空文件内容并重新写入数据。
  • rb:以二进制模式读取文件。在这种模式下,可以从文件中读取二进制数据。通常用于读取二进制文件、序列化对象等。

🎄random

random是Python提供的一个用于生成伪随机数的标准库。它可以用于模拟、游戏、密码学等多种应用场景。

下面是一些random库提供的常用函数:

  • random.random():返回一个0到1之间的随机浮点数。
  • random.randint(a, b):返回一个a到b之间的随机整数。
  • random.choice(seq):从序列seq中返回一个随机元素。
  • random.shuffle(seq):将序列seq中的元素随机排列。
  • random.sample(pop, k):从序列pop中随机选择k个元素并返回一个新序列。
import random

# 生成随机整数
random_int = random.randint(1, 100)

# 生成随机浮点数
random_float = random.random()

# 从列表中选择一个随机元素
fruits = ['apple', 'banana', 'orange']
random_fruit = random.choice(fruits)

# 将列表中的元素随机排列
random.shuffle(fruits)

# 从列表中随机选择2个元素
two_fruits = random.sample(fruits, 2)

🛸样例

编写一个程序实现如下功能:
随机产生20个1~100之间的随机整数,写入文本文件中。

import random

# 生成20个1~100之间的随机整数并写入文件
random_numbers = []
for _ in range(20):
    random_number = random.randint(1, 100)
    random_numbers.append(random_number)
with open("E:/a.txt", "w", encoding="utf-8") as file:
    file.write(' '.join(map(str, random_numbers)))

请添加图片描述

🎄numpy库

numpy库在科学计算和数据分析领域有着广泛的应用,它提供了高效的多维数组对象(ndarray)以及对这些数组进行操作的函数。以下是numpy库的一些主要用途:

  • 数组操作:numpy的核心功能是处理数组。它提供了丰富的数组操作函数,例如创建数组、重塑数组形状、索引和切片数组、数组的数学运算(加法、减法、乘法、除法)、逻辑运算等。
  • 数学函数:numpy提供了大量的数学函数,包括三角函数、指数函数、对数函数、幂函数、取整函数、统计函数等。这些函数对于科学计算和数据分析非常有用。
  • 线性代数运算:numpy提供了矩阵和向量的运算功能,包括矩阵乘法、求逆、解线性方程组、特征值和特征向量计算等。这些功能对于线性代数相关的问题非常重要。
  • 随机数生成:numpy可以生成各种分布的随机数,如均匀分布、正态分布、泊松分布等。这对于模拟实验和随机抽样非常有用。
  • 文件输入输出:numpy能够读写数组数据到硬盘,支持多种文件格式,如文本文件、二进制文件、CSV文件等。这样可以方便地保存和加载数据。

总的来说,numpy库为Python提供了高性能、便捷的数组操作和数学函数,使得科学计算和数据分析更加高效和简洁。它是许多其他科学计算库的基础,例如pandas、scikit-learn等都建立在numpy库的基础之上。

import numpy as np

# 创建一个一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print("一维数组:", arr1)

# 创建一个二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print("二维数组:\n", arr2)

# 数组加法
arr3 = arr1 + 10
print("数组加法:", arr3)

# 数组乘法
arr4 = arr2 * 2
print("数组乘法:\n", arr4)

# 矩阵乘法
mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[5, 6], [7, 8]])
result_mat = np.dot(mat1, mat2)
print("矩阵乘法结果:\n", result_mat)

在这里插入图片描述

🛸例子

利用numpy库求解下列线性方程组的解
在这里插入图片描述
在这里插入图片描述

x = np.linalg.solve(A, b)
这段代码有什么用

这段代码使用了numpy库中的linalg.solve()函数,它用于求解线性方程组

具体来说,假设有一个线性方程组:A * x = b,其中 A 是一个给定的矩阵,b 是一个给定的向量,x 是要求解的未知向量。

np.linalg.solve(A, b)的作用就是解决这个线性方程组,求出未知向量 x 的值。它使用了数值线性代数的方法,在数学上可以表示为:x = A⁻¹ * b,其中 A⁻¹ 是矩阵 A 的逆矩阵。

在技术的道路上,我们不断探索、不断前行,不断面对挑战、不断突破自我。科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。让我们携手并进,共同努力,开创美好的未来!愿我们在科技的征途上不断奋进,创造出更加美好、更加智能的明天!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1310169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高翔《自动驾驶与机器人中的SLAM技术》第九、十章载入静态地图完成点云匹配重定位

修改mapping.yaml文件中bag_path: 完成之后会产生一系列的点云文件以及Keyframe.txt文件: ./bin/run_frontend --config_yaml ./config/mapping 生成拼接的点云地图map.pcd文件 : ./bin/dump_map --pose_sourcelidar 。、 完成第一次优…

halcon创建画布,并在画布上绘制显示

Halcon的画布主要用于图像显示和处理。以下是一个简单的使用Halcon画布的例子: 1.创建一个窗口: dev_open_window( Row, Column, Width, Height, Background : WindowHandle) 默认为:dev_open_window (0, 0, 512, 512, black, WindowHandle) **创建一个大小为512…

二、Java基础语法

day02 - Java基础语法 1. 注释 ​ 注释是对代码的解释和说明文字。 Java中的注释分为三种: 单行注释: // 这是单行注释文字多行注释: /* 这是多行注释文字 这是多行注释文字 这是多行注释文字 */ 注意:多行注释不能嵌套使用…

Ganache结合内网穿透实现远程或不同局域网进行连接访问

文章目录 前言1. 安装Ganache2. 安装cpolar3. 创建公网地址4. 公网访问连接5. 固定公网地址 前言 Ganache 是DApp的测试网络,提供图形化界面,log日志等;智能合约部署时需要连接测试网络。 Ganache 是一个运行在本地测试的网络,通过结合cpol…

02-线程的两种创建方式继承Thread类和实现Runnable接口

继承Thread类创建线程 获取线程对象 编写一个类继承Thread类并在重写的run方法中编写业务逻辑代码,那么这个类就是一个线程类 Runnable接口的run方法没有抛出任何异常,所以子类重写run方法时也不能抛出任何异常,对于程序执行中遇到异常时只能捕获不能抛出 // 重写方法抛出的…

教你一招,用AI免费一分钟生成3D海报!

近些年,人工智能(AI)凭借其深远的影响和技术创新,引发了各领域的大变革,揭开了设计创作新时代的序幕。设计行业是这场变革的主要受益者之一。以海报设计为例,它过去一直需要专业设计师的精心构思和设计&…

工厂如何通过设备健康管理系统提高设备可靠性

在现代工厂运营中,设备可靠性对于保持生产效率和降低成本至关重要。然而,许多工厂面临设备故障和停机时间的挑战,这对生产计划和盈利能力产生了负面影响。为了解决这一问题,越来越多的工厂正在采用设备健康管理系统来提高设备的可…

鸿鹄云商:Java商城引领商业模式的潮流,免费搭建多种商城模式

java SpringCloud版本b2b2c鸿鹄云商平台全套解决方案 使用技术: Spring CloudSpring BootMybatis微服务服务监控可视化运营 B2B2C平台: 平台管理端(包含自营) 商家平台端(多商户入驻) PC买家端、手机wap/公众号买家端 微服务(30个通用…

文心一言 VS 讯飞星火 VS chatgpt (156)-- 算法导论12.3 3题

三、用go语言,对于给定的 n 个数的集合,可以通过先构造包含这些数据的一棵二叉搜索树(反复使用TREE-INSERT 逐个插入这些数),然后按中序遍历输出这些数的方法,来对它们排序。这个排序算法的最坏情况运行时间和最好情况运行时间各是…

带你手把手解读firejail沙盒源码(0.9.72版本)(三) etc-cleanup

文章目录 main.c代码解释 Makefile代码解释 ├── etc-cleanup │ ├── Makefile │ └── main.c这个文件夹在 linux 环境下使用 git clone 到本地才有,直接下载源代码没有 git clone https://github.com/netblue30/firejail.gitetc-clean 文件夹通常不是一…

Spring Boot+FreeMarker=打造高效Web应用

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Spring BootFreeMarker的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一. FreeMarker是什么 二…

C#教程(一):面向对象

1、介绍 C#是一种多范式编程语言,但其中一个主要的编程范式是面向对象编程(OOP)。面向对象编程有一些特点,而C#提供了丰富的功能来支持这些特点。 2、面向对象特点 封装(Encapsulation): 封装…

2024年金科《数字媒体技术》专业参考书目及考试大纲

《计算机网络基础》考试大纲 一、参考书目: 《计算机网络技术与应用(第 2 版)》,段标、张玲主编,电子工业出版社. 二、考试形式: 闭卷,考试时间 90 分钟 三、考试内容和要求 (一…

【爬虫课堂】如何高效使用短效代理IP进行网络爬虫

目录 一、前言 二、代理IP的基本知识 三、短效代理IP的优势 四、高效使用短效代理IP的技巧 1. 多源获取代理IP 2. 质量筛选代理IP 3. 使用代理池 4. 定时更换代理IP 5. 失败重试机制 6. 监控和自动化 五、示例代码 六、结语 一、前言 网络爬虫是一种自动化程序&am…

RocketMQ源码 Broker-BrokerStatsManager Broker统计管理组件源码分析

前言 BrokerStatsManager 主要负责对broker端的系统指标进行统计,如QUEUE_GET_NUMS队列获取数量、QUEUE_GET_SIZE队列获取大小指标的 分钟、小时、天级别的统计数据。它针对的所有指标都是使用后台定时调度线程,对统计条目中的数据进行后台统计计算&…

Leetcode—108.将有序数组转换为二叉搜索树【简单】

2023每日刷题(五十八) Leetcode—108.将有序数组转换为二叉搜索树 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ struct TreeNode* dfs(int …

Halcon 模板匹配基于相关性

文章目录 基于相关性使用匹配助手 基于相关性 适用场景 模板匹配:当你需要在图像中找到一个已知的模板时,例如在工业生产线上检测产品的特定标识或零件的特征时,相关性匹配是一种简单而有效的方法。实时应用:相关性匹配通常具有较…

scratch认识图形 2023年12月中国电子学会 图形化编程 scratch编程等级考试二级真题和答案解析

目录 scratch认识图形 一、题目要求 1、准备工作 2、功能实现 二、案例分析

(0-1)分布

假设离散型随机变量X只可能取到0、1两个值,它的分布律为: ,其中, 那么称X服从参数为p的0-1分布,也叫两点分布。 其实上面公式就是将下面两个式子写在一起:

【RTOS学习】任务创建 | 任务启动 | 任务切换 | 任务暂停和恢复 | 任务阻塞和唤醒 | 临界资源保护

🐱作者:一只大喵咪1201 🐱专栏:《RTOS学习》 🔥格言:你只管努力,剩下的交给时间! 目录 🌏任务创建🧭TCB和栈🧭伪造现场🧭链表操作 &am…