- 快速高效的多维数组对象ndarray
- 对数组执行元素级计算及直接对数组执行数学运算的函数(向量化)
- 用于读写硬盘上基于数组的数据集工具
- 线性代数运算、傅里叶变换及随机数生成
- 用于将C\C++\Fortran代码集成到Python的工具
ndarray:一种多维数组对象
ndarray是一个快速而灵活的大数据集容器,你可以利用这种数组对整块数据执行一些数学运算,其语法跟标量元素之间的运算一样:
# demo演示# 数组和矢量运算import numpy as npdata = np.array([[0.9, 0.3, 0.4], [0.4, 0.6, 0.7]])# 打印data# array([[ 0.9, 0.3, 0.4],# [ 0.4, 0.6, 0.7]])# 对数组中的元素全部*10data * 10# array([[ 9., 3., 4.],# [ 4., 6., 7.]])data + data# array([[ 1.8, 0.6, 0.8],# [ 0.8, 1.2, 1.4]])np.zeros(10) # 创建一个长度为10,全部填0的数组# array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])np.zeros((3,6)) # 创建一个3*6的二维数组,全部填0# array([[ 0., 0., 0., 0., 0., 0.],# [ 0., 0., 0., 0., 0., 0.],# [ 0., 0., 0., 0., 0., 0.]])
基本的索引和切片
索引和切片是ndarray重要的使用方式,对于数据处理有特别的作用。
# 切片arr = np.arange(10)# 创建一个内容为0~9的数组# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])arr[5]# 选取第6个元素# Out[7]: 5arr[5:8]# 按范围选取# array([5, 6, 7])arr[5:8] = 12# 将对应范围内的切片内容修改为12# array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])# 生成一个随机二维数组arr2d = np.random.randn(7,4)# array([[ 0.33953486, -0.56257383, -0.58624255, 0.50795574],# [ 1.59093701, 1.22886954, -0.05342751, -0.90508721],# [ 1.46264462, -1.2433142 , -0.25190639, 1.35581796],# [ 0.07804892, 0.19360941, -2.94733598, -2.27054301],# [ 1.18812107, -1.08107486, 0.86585761, -0.65458027],# [ 1.1732461 , 0.72867558, 0.13047166, 0.18006481],# [ 0.62308033, 1.32612098, -0.29025684, 1.09439383]])# 布尔型索引,将当前小于0的数据全部置0arr2d < 0# array([[False, True, True, False],# [False, False, True, True],# [False, True, True, False],# [False, False, True, True],# [False, True, False, True],# [False, False, False, False],# [False, False, True, False]], dtype=bool)# 利用布尔型索引将对应数组内容进行清洗arr2d[arr2d < 0] = 0# 将上小于0的元素全部置0# array([[ 0.33953486, 0. , 0. , 0.50795574],# [ 1.59093701, 1.22886954, 0. , 0. ],# [ 1.46264462, 0. , 0. , 1.35581796],# [ 0.07804892, 0.19360941, 0. , 0. ],# [ 1.18812107, 0. , 0.86585761, 0. ],# [ 1.1732461 , 0.72867558, 0.13047166, 0.18006481],# [ 0.62308033, 1.32612098, 0. , 1.09439383]])
数据切片是原始数组的视图,任何修改都会直接反映到源数组上。
pandas
pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数。其中DataFrame是最常用的结构,是一个面向列的二维表结构,且含有行标和列标。兼具NumPy高性能的数组计算功能以及电子表格和关系型数据库灵活的数据处理功能。
基础数据构建
- Series:类似一维数组的对象。
```python # demo演示 obj = Series([4,7,-5,3]) print(obj) obj2 = Series([4,7,-5,3], index=['a','b','c','d']) print(obj2) # NumPy的数组运算,在Series中都会保留索引和值之间的链接 # 与上面ndarray不同的是,Series可以索引的形式取值 obj.values obj.index obj2[obj2 > 0] ```
- DataFrame:表格型数据结构,含有一组有序的列,每列可以是不同的值型(基本代码演示可参考本文最后一节)
matplotlib
可与IPython结合使用成为交互式数据绘图环境,负责数据可视化部分,下面是简单的示例代码。
#%%import matplotlib.pyplot as pltimport matplotlib as mplimport numpy as npx = np.linspace(0, 20, 100)plt.plot(x, np.sin(x))plt.show()
IPython
Python的科学计算标准工具集组成部分,将其他所有的东西联系到一起,为交互式和探索式计算提供了一个强健而高效的环境。除了标准的基于终端的IPython Shell外,还提供了:
- 一个类似于Mathematica的HTML笔记本
- 一个基于Qt框架的GUI控制台,其中含有绘图、多行编辑以及语法高亮显示等功能。
- 用于交互式并行和分布式计算的基础架构。
SciPy
一组专门解决科学计算中各种标准问题域的包的集合,可用于解决各种数值积分、微分方程、矩阵之类的工具包。(不作详述)
简单实战,如何清理分析日志数据
例子,用Python解析后台查询的日志。
import pandas as pd# 定义表头# 注意:如果表头数量与日志中的分列数量不对应,则DataFrame创
例子,用Python解析后台查询的日志。
import pandas as pd# 定义表头# 注意:如果表头数量与日志中的分列数量不对应,则DataFrame创建
最后
如果对Python感兴趣的话,可以试试我的学习方法以及相关的学习资料
点此免费领取:CSDN大礼包:《python学习路线&全套学习资料》免费分享
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
四、Python视频合集
文末有福利领取哦~
👉一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉二、Python必备开发工具
👉三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉 四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
👉五、Python练习题
检查学习结果。
👉六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!