Python数据处理入门教程!
Posted Datawhale
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python数据处理入门教程!相关的知识,希望对你有一定的参考价值。
[4, 5, 6]], dtype=int32)
[4.4, 5.5, 6.6]])
时,目标的 shape 需要的元素数量一定要和原始的元素数量相等。[4., 5., 6.]])
np.arange( [ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
[ 3., 4., 5.],
[ 6., 7., 8.],
[ 9., 10., 11.]])
np.arange( [104, 106]],
[[108, 110],
[112, 114]],
[[116, 118],
[120, 122]]])
[5., 6., 7., 8., 9.]])
np.linspace( [5.4, 7.2, 9. ]])
[2.21406416e+02, 1.33943076e+03, 8.10308393e+03]])
[5.4, 7.2, 9. ]])
下面我们更进一步看一下:
N = 2 print("这不行")
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
2 print("这还不行")
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
或 np.ones_like
,二者可以快速生成给定 array 一样 shape 的 0 或 1 向量,这在需要 Mask 某些位置时可能会用到。⚠️ 需要注意的是:创建出来的 array 默认是 float 类型。
np.ones( [1., 1., 1.]])
np.zeros(( [0., 0., 0., 0.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]]])
[0., 0., 0.],
[0., 0., 0.]],
[[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]]])
无疑了,这里我们只介绍几个比较常用的「生产」数据相关的 API。它们经常用于随机生成训练或测试数据,神经网路初始化等。⚠️ 需要注意的是:这里我们统一推荐使用新的 API 方式创建,即通过 np.random.default_rng()
先生成 Generator
,然后再在此基础上生成各种分布的数据(记忆更加简便清晰)。不过我们依然会介绍就的 API 用法,因为很多代码中使用的还是旧的,您可以混个眼熟。
[0.656858 , 0.88171822, 0.81744539]])
[0.14594537, 0.34365713],
[0.28714656, 0.40508807]])
[-0.63552782, 0.51072282, -0.14968825]])
[0.69736803, 0.09417735, 0.97562235]])
[0.68631534, 0.77560864, 0.05803685]])
[3, 8, 1]])
[8, 5, 7]])
[-1.34665975, -0.74064846, -2.5181665 , 0.66866357]])
[ 0.71545457, 1.24926923, -1.22117522, 1.23336317]])
[ 0.90269753, -0.5679421 , 0.8769029 , 0.81726869, -0.59442623],
[ 0.31453468, -0.18190156, -2.95932929, -0.07164822, -0.23622439]])
[ 0.33164095, 0.33921626, 0.45251278, -0.03281331, -0.74066207],
[-0.61835785, -0.56459129, 0.37724436, -0.81295739, 0.12044035]])
总之,一般会用的就是2个分布:均匀分布和正态(高斯)分布。另外,size
可以指定 shape。
rng = np.random.default_rng( [ 0.77779194, 0.0660307 , 1.12724121]])
[4, 5, 6]])
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
arr[ [ 3., 4., 5.],
[ 6., 7., 8.],
[ 9., 10., 11.]])
[0.09417735, 0.97562235, 0.7611397 , 0.78606431],[ 3., 4., 5.],
[ 6., 7., 8.],
[ 9., 10., 11.]])
[0.12811363, 0.45038594, 0.37079802, 0.92676499]])
我们用到的最多。⚠️ 需要注意的是:size 不是 shape,ndim 表示有几个维度。
[0.09417735, 0.97562235, 0.7611397 , 0.78606431],
[0.12811363, 0.45038594, 0.37079802, 0.92676499]])
[0.09417735],
[0.12811363]])
[0.83345382],
[0.5694807 ]])
[0.09417735, 0.97562235, 0.7611397 , 0.78606431],
[0.12811363, 0.45038594, 0.37079802, 0.92676499]])
[2.61700371],
[1.87606258]])
[0.8681334 , 1.41450079, 1.61973762, 1.48343233],
[0.99624703, 1.86488673, 1.99053565, 2.41019732]])
[0.09417735, 1.0697997 , 1.8309394 , 2.61700371],
[0.12811363, 0.57849957, 0.94929759, 1.87606258]])
# 标准差,用法类似
np.std(arr)
0.28783096517727075
# 按列求标准差
np.std(arr, axis=0)
array([0.3127589 , 0.25035525, 0.21076935, 0.09444968])
# 方差
np.var(arr, axis=1)
array([0.02464271, 0.1114405 , 0.0839356 ])
文献和资料
[1.87606258]])
[0.8681334 , 1.41450079, 1.61973762, 1.48343233],
[0.99624703, 1.86488673, 1.99053565, 2.41019732]])
[0.09417735, 1.0697997 , 1.8309394 , 2.61700371],
[0.12811363, 0.57849957, 0.94929759, 1.87606258]])
# 标准差,用法类似
np.std(arr)
0.28783096517727075
# 按列求标准差
np.std(arr, axis=0)
array([0.3127589 , 0.25035525, 0.21076935, 0.09444968])
# 方差
np.var(arr, axis=1)
array([0.02464271, 0.1114405 , 0.0839356 ])
文献和资料
一键三连,一起学习⬇️
Python 异常处理-Python零基础入门教程
目录
零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门
在 Python 开发中,代码书写时难免有疏忽或者意向不到的 bug ,导致程序 run 的过程中有可能会直接崩溃;
然后对于程序猿而言,程序因 bug 崩溃是家常便饭,为了增加程序的健壮性,防止程序崩溃,我们可以对程序的有可能发生崩溃的代码增加异常处理,以达到程序稳健运行的目的。
一.Python 异常处理简介
一般情况,Python 无法正常处理程序时,就是会产生异常造成程序崩溃,举个例子:
1.大家都知道分母不能为 0,如果分母为 0,程序必然崩溃;
x = 3/0
程序崩溃/报错:ZeroDivisionError: division by zero
2.假如 Python 文件读写 中,我们讲解了文件的读写操作,如果我们对一个不存在的文件读取内容,程序必然也会崩溃;
# 读取123.txt文件,实际上该文件并不存在
fp =open("123.txt","r")
程序崩溃/报错:FileNotFoundError: [Errno 2] No such file or directory: \'123.txt\'
对于以上的各种异常情况,我们可以通过 try…except…解决,那么具体有哪些异常能捕获呢?如下所示:
- 1.BaseException — 所有异常的基类
- 2.SystemExit — 解释器请求退出
- 3.KeyboardInterrupt — 用户中断执行(通常是输入^C)
- 4.Exception — 常规错误的基类
- 5.StopIteration — 迭代器没有更多的值
- 6.GeneratorExit — 生成器(generator)发生异常来通知退出
- 7.StandardError — 所有的内建标准异常的基类
- 8.ArithmeticError — 所有数值计算错误的基类
- 9.FloatingPointError — 浮点计算错误
- 10.OverflowError — 数值运算超出最大限制
- 11.ZeroDivisionError — 除(或取模)零 (所有数据类型)
- 12.AssertionError — 断言语句失败
- 13.AttributeError — 对象没有这个属性
- 14.EOFError — 没有内建输入,到达 EOF 标记
- 15.EnvironmentError — 操作系统错误的基类
- 16.IOError — 输入/输出操作失败
- 17.OSError — 操作系统错误
- 18.WindowsError — 系统调用失败
- 19.ImportError — 导入模块/对象失败
- 20.LookupError — 无效数据查询的基类
- 21.IndexError — 列中没有此索引(index)
- 22.KeyError — 映射中没有这个键
- 23.MemoryError — 内存溢出错误(对于 Python 解释器不是致命的)
- 24.NameError — 未声明/初始化对象 (没有属性)
- 25.UnboundLocalError — 访问未初始化的本地变量
- 26.ReferenceError — 弱引用(Weak reference)试图访问已经垃圾回收了的对象
- 27.RuntimeError — 一般的运行时错误
- 28.NotImplementedError — 尚未实现的方法
- 29.SyntaxError — Python 语法错误
- 30.IndentationError — 缩进错误
- 31.TabError — Tab 和空格混用
- 32.SystemError — 一般的解释器系统错误
- 33.TypeError — 对类型无效的操作
- 34.ValueError — 传入无效的参数
- 35.UnicodeError — Unicode 相关的错误
- 36.UnicodeDecodeError — Unicode 解码时的错误
- 37.UnicodeEncodeError — Unicode 编码时错误
- 38.UnicodeTranslateError — Unicode 转换时错误
- 39.Warning — 警告的基类
- 40.DeprecationWarning — 关于被弃用的特征的警告
- 41.FutureWarning — 关于构造将来语义会有改变的警告
- 42.OverflowWarning — 旧的关于自动提升为长整型(long)的警告
- 43.PendingDeprecationWarning — 关于特性将会被废弃的警告
- 44.RuntimeWarning — 可疑的运行时行为(runtime behavior)的警告
- 45.SyntaxWarning — 可疑的语法的警告
- 46.UserWarning — 用户代码生成的警告[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QaPnrCEr-1622213823637)(blob:https://www.codersrc.com/d6c5ed6d-6da0-4e59-bd44-380ff6d8db5d “Python 异常处理-猿说编程”)]
二.Python 异常捕获方式
1.捕获所有异常
try:
<代码>
except:
print("异常说明")
示例代码:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
"""
try:
x = 3 / 0 # 程序出现异常,不会继续执行后面的代码
print("hello world")
except:
print("异常说明:分母不能为0")
print("程序正常结束")
\'\'\'
输出结果:
异常说明:分母不能为0
程序正常结束
\'\'\'
2.捕获指定异常
try:
< 语句 >
except < 异常名 >:
print(\'异常说明\')
示例代码:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
"""
try:
fp = open("123.txt","r") # 程序出现异常,不会继续执行后面的代码
print("hello world")
fp.close()
except IOError:
print("异常说明:文件读取失败")
print("程序正常结束")
\'\'\'
输出结果:
异常说明:文件读取失败
程序正常结束
\'\'\'
3.捕获多个异常
try:
< 语句 >
except < 异常名1 >:
print(\'异常说明1\')
except < 异常名2 >:
print(\'异常说明2\')
except < 异常名3 >:
print(\'异常说明3\')
该种异常处理语法的规则是:
- a.执行 try 下的语句,如果引发异常,则执行过程会跳到第一个 except 语句。
- b.如果第一个 except 中定义的异常名与引发的异常匹配,则执行该 except 中的语句。
- c.如果引发的异常不匹配第一个 except,则会搜索第二个 except,允许编写的 except 数量没有限制。
- d.如果所有的 except 都不匹配,则异常会传递到下一个调用本代码的最高层 try 代码中。
示例代码:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
"""
try:
fp = open("123.txt","r") # 程序出现异常,不会继续执行后面的代码
print("hello world")
fp.close()
except GeneratorExit:
print("异常说明:GeneratorExit")
except FloatingPointError:
print("异常说明:FloatingPointError")
except OverflowError:
print("异常说明:OverflowError")
except ZeroDivisionError:
print("异常说明:ZeroDivisionError")
except IOError:
print("异常说明:IOError")
print("程序正常结束")
\'\'\'
输出结果:
异常说明:IOError
程序正常结束
\'\'\'
4.万能的异常捕获
try:
< 语句 >
except Exception as e: # 自动识别异常信息,并将异常信息保存在e中
print(\'异常说明:\',e)
示例代码:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
"""
try:
fp = open("python.txt","r") # 程序出现异常,不会继续执行后面的代码
print("hello world")
fp.close()
except Exception as e:
print("异常说明:",e)
print("程序正常结束")
\'\'\'
输出结果:
异常说明: [Errno 2] No such file or directory: \'python.txt\'
程序正常结束
\'\'\'
5.异常中的 else
如果判断完没有异常之后还想做其他事,就可以使用下面这样的 else 语句,注意:是在 try 中没有异常情况下,才会执行 else 之后的代码。
try:
< 语句 >
except < 异常名1 >:
print(\'异常说明1\')
except < 异常名2 >:
print(\'异常说明2\')
else:
< 语句 > # try语句中没有异常则执行此段代码
示例代码:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
"""
try:
print("hello world")
except GeneratorExit:
print("异常说明:GeneratorExit")
except FloatingPointError:
print("异常说明:FloatingPointError")
except OverflowError:
print("异常说明:OverflowError")
except ZeroDivisionError:
print("异常说明:ZeroDivisionError")
else:
print("i love you")
print("程序正常结束")
\'\'\'
输出结果:
hello world
i love you
程序正常结束
\'\'\'
6.异常中的finally
try…finally…语句无论是否发生异常都将会执行最后的代码。
try:
< 语句 >
finally:
< 语句 >
示例代码:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
"""
try:
fp = open("python.txt","r") # 程序出现异常,不会继续执行后面的代码
print("hello world")
fp.close()
except Exception as e:
print("异常说明:",e)
finally:
print("finally") # 无论是否发生异常都将会执行最后的代码
print("程序正常结束")
\'\'\'
输出结果:
raise Exception!
异常说明: [Errno 2] No such file or directory: \'python.txt\'
finally
程序正常结束
\'\'\'
7.raise主动触发异常
可以使用 raise 语句自己触发异常,语法如下:
raise [Exception [, args [, traceback]]]
语句中 Exception 是异常的类型(例如,IOError )参数标准异常中任一种,args 是自已提供的异常参数。最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象;示例代码如下:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
"""
try:
raise Exception("raise Exception!") # 触发异常后,后面的代码就不会再执行
print("hello world")
except Exception as e:
print(e)
finally:
print("OK")
\'\'\'
输出结果:
raise Exception!
OK
\'\'\'
在 Python 开发中,为了增加程序的健壮性,异常处理 try…except… 是必须掌握的内容.
三.猜你喜欢
- Python for 循环
- Python 字符串
- Python 列表 list
- Python 元组 tuple
- Python 字典 dict
- Python 条件推导式
- Python 列表推导式
- Python 字典推导式
- Python 函数声明和调用
- Python 不定长参数 *argc/**kargcs
- Python 匿名函数 lambda
- Python return 逻辑判断表达式
- Python 字符串/列表/元组/字典之间的相互转换
- Python 局部变量和全局变量
- Python type 函数和 isinstance 函数区别
- Python is 和 == 区别
- Python 可变数据类型和不可变数据类型
- Python 浅拷贝和深拷贝
未经允许不得转载:猿说编程 » Python 异常处理
本文由博客 - 猿说编程 猿说编程 发布!
以上是关于Python数据处理入门教程!的主要内容,如果未能解决你的问题,请参考以下文章