python科学计算三剑客_1-python数据分析-数据分析介绍、数据分析三剑客之NumPy
数据分析三剑客
numpy
pandas(重点)
matplotlib
numpy模块
NumPy(Numerical Python) 是 Python 语言中做科学计算的基础库。侧重在于数值计算,也是大部分Python科学计算库的基础,多用于在大型、多维数组上执行的数值运算。
重点
numpy数组的创建
numpy索引和切片
级联
变形
矩阵的乘法和转置
常见的聚合函数+统计
numpy的创建
使用np.array()创建
使用plt创建
使用np的routines函数创建
使用np.array()创建
#用array()创建一个一维数组
importnumpy as np
np.array([1,2,3,4,5]) #array([1, 2, 3, 4, 5])
#使用array()创建一个多维数组
np.array([[1,2,3],[4,5,6]])
array([[1, 2, 3],
[4, 5, 6]])
数组和列表的区别是什么?
数组中存储的数据元素类型必须是统一类型
优先级:
字符串 > 浮点型 > 整数
np.array([1.1,'哈哈',11]) #array(['1.1', '哈哈', '11'], dtype='
np.array([1,5,6.1,8]) #array([1. , 5. , 6.1, 8. ])
将外部的一张图片读取加载到numpy数组中,然后尝试改变数组元素的数值查看对原始图片的影响
importmatplotlib.pyplot as plt#imread可以返回一个numpy数组
img_arr = plt.imread('./1.jpg')#将返回的数组的数据进行图像的展示
plt.imshow(img_arr) #imshow也可以将一个二维数组进行图片展示规
plt.imshow(img_arr + 100)
zeros()、ones()、linespace()、arange()、random系列
#ones zeros()与ones()相似
np.ones(shape=(3,4)) #返回一个3行4列的np数组,元素都是1., zeros是0.
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])#linspace返回一维形式的等差数列 开始 ,结束,一共8个元素
np.linspace(0, 50, num=8)
array([ 0. ,7.14285714, 14.28571429, 21.42857143, 28.57142857,35.71428571, 42.85714286, 50. ])#arange返回一维形式的等差数列
np.arange(0,50,5)
array([ 0,5, 10, 15, 20, 25, 30, 35, 40, 45])#random.randint 返回指定形状的随机整数数组
np.random.randint(0,20,size=(4,5))
array([[3, 1, 16, 14, 1],
[18, 13, 10, 14, 18],
[19, 19, 1, 8, 13],
[15, 2, 17, 15, 6]])#random.random 随机范围0-1
np.random.random(size=(2, 2))
array([[0.16654448, 0.59399791],
[0.6076535 , 0.89254046]])
numpy的常用属性
shape 形状
ndim 维度
size 元素总个数
dtype 元素的数据类型
img_arr.shape #返回数组形状
(500, 500, 3)
img_arr.ndim#返回数组维度
3img_arr.size#返回数组元素总个数
750000img_arr.dtype#返回数组元素的数据类型
dtype('uint8')
type(img_arr)#返回数组的数据类型
numpy.ndarray
numpy的数据类型
array(dtype=?):可以设定数据类型
arr.dtype = '?':可以修改数据类型
arr.astype('?'):也可以修改数据类型
修改数据类型
arr = np.array([1,2,3], dtype='float16')
array([1., 2., 3.], dtype=float16)#1、修改arr元素的数据类型
arr.astype('int8')
array([1, 2, 3], dtype=int8)#2、修改arr元素的数据类型
arr.dtype='float16'array([1., 2., 3.], dtype=float16)
numpy的索引和切片操作(重点)
索引取值操作
索引取值操作和列表同理
arr = np.random.randint(0,100,size=(5,6))
array([[21, 36, 62, 40, 52, 54],
[91, 45, 40, 35, 17, 98],
[48, 49, 36, 59, 47, 36],
[80, 66, 77, 21, 1, 80],
[18, 32, 55, 0, 32, 12]])
arr[3][4]1arr[0,4]52
切片操作
切出前两行数据
切出前两列数据
切出前两行的前两列的数据
数组数据翻转
练习:将一张图片上下左右进行翻转操作
练习:将图片进行指定区域的裁剪
#切出数组的前两行的数据
arr[0:2]
array([[21, 36, 62, 40, 52, 54],
[91, 45, 40, 35, 17, 98]])#切出数组的前两列
arr[:,0:2]
array([[21, 36],
[91, 45],
[48, 49],
[80, 66],
[18, 32]])#切出数组前两行的前两列
arr[0:2, 0:2]
array([[21, 36],
[91, 45]])#将数组行倒置
arr[::-1]
array([[18, 32, 55, 0, 32, 12],
[80, 66, 77, 21, 1, 80],
[48, 49, 36, 59, 47, 36],
[91, 45, 40, 35, 17, 98],
[21, 36, 62, 40, 52, 54]])#将数组列倒置
arr[::,::-1]
array([[54, 52, 40, 62, 36, 21],
[98, 17, 35, 40, 45, 91],
[36, 47, 59, 36, 49, 48],
[80, 1, 21, 77, 66, 80],
[12, 32, 0, 55, 32, 18]])#将数组进行行列导倒置
arr[::-1,::-1]
array([[12, 32, 0, 55, 32, 18],
[80, 1, 21, 77, 66, 80],
[36, 47, 59, 36, 49, 48],
[98, 17, 35, 40, 45, 91],
[54, 52, 40, 62, 36, 21]])
将图片进行翻转
importmatplotlib.pyplot as plt
img_arr= plt.imread('./1.jpg')
plt.imshow(img_arr)
img_arr.shape
(500, 500, 3) #前俩个是图片像素,最后一个是颜色维度
#将图片左右翻转
plt.imshow(img_arr[:,::-1,:])#将图片上下翻转
plt.imshow(img_arr[::-1])#上下左右颜色都倒置
plt.imshow(img_arr[::-1,::-1,::-1])#图片的裁剪:将脸部数据裁剪下来
plt.imshow(img_arr[30:300,140:330,:])
变形 reshape
注意:变形前和变形后数组的容量不可以发生变化
arr.shape
(5, 6)#将二维数组变形成一维数组 reshape()
arr_1 = arr.reshape((30,)) #原数组一共有30个元素,所以这里必须是30
array([21, 36, 62, 40, 52, 54, 91, 45, 40, 35, 17, 98, 48, 49, 36, 59, 47,36, 80, 66, 77, 21, 1, 80, 18, 32, 55, 0, 32, 12])#将一维数组变多维
arr_1 = arr.reshape((3,10)) #给定一个值另一个可以用-1自动计算
array([[21, 36, 62, 40, 52, 54, 91, 45, 40, 35],
[17, 98, 48, 49, 36, 59, 47, 36, 80, 66],
[77, 21, 1, 80, 18, 32, 55, 0, 32, 12]])
arr_1= arr.reshape((-1,10))
arr_1= arr.reshape((3,-1))
array([[21, 36, 62, 40, 52, 54, 91, 45, 40, 35],
[17, 98, 48, 49, 36, 59, 47, 36, 80, 66],
[77, 21, 1, 80, 18, 32, 55, 0, 32, 12]])
级联操作 concatenate
级联的操作意义:将多个numpy数组进行横向或者纵向拼接
axis轴向的理解
0:列 y轴方向,竖直方向
1:行 x轴方向,水平方向
问题:
级联的两个数组维度一样,但是行列个数不一样会如何?
#axis=0列和列进行拼接,axis=1行和行进行拼接
np.concatenate((arr,arr),axis=1)
array([[21, 36, 62, 40, 52, 54, 21, 36, 62, 40, 52, 54],
[91, 45, 40, 35, 17, 98, 91, 45, 40, 35, 17, 98],
[48, 49, 36, 59, 47, 36, 48, 49, 36, 59, 47, 36],
[80, 66, 77, 21, 1, 80, 80, 66, 77, 21, 1, 80],
[18, 32, 55, 0, 32, 12, 18, 32, 55, 0, 32, 12]])
np.concatenate((arr,arr),axis=0)
array([[21, 36, 62, 40, 52, 54],
[91, 45, 40, 35, 17, 98],
[48, 49, 36, 59, 47, 36],
[80, 66, 77, 21, 1, 80],
[18, 32, 55, 0, 32, 12],
[21, 36, 62, 40, 52, 54],
[91, 45, 40, 35, 17, 98],
[48, 49, 36, 59, 47, 36],
[80, 66, 77, 21, 1, 80],
[18, 32, 55, 0, 32, 12]])
级联的两个数组维度一样,但是行列个数不一样会如何?
如果横向级联保证行数一致,纵向级联保证列数一致
注意:维度不一致的数组无法级联
arr_new = np.random.randint(0,100,size=(5,5))
array([[29, 43, 36, 67, 32],
[63, 65, 31, 90, 55],
[13, 59, 3, 3, 22],
[55, 26, 10, 5, 80],
[27, 20, 61, 75, 23]])
arr
array([[21, 36, 62, 40, 52, 54],
[91, 45, 40, 35, 17, 98],
[48, 49, 36, 59, 47, 36],
[80, 66, 77, 21, 1, 80],
[18, 32, 55, 0, 32, 12]])
np.concatenate((arr,arr_new), axis=0) #这样就会报错他俩列数不同
np.concatenate((arr,arr_new), axis=1) #先写的数组元素在前
array([[21, 36, 62, 40, 52, 54, 29, 43, 36, 67, 32],
[91, 45, 40, 35, 17, 98, 63, 65, 31, 90, 55],
[48, 49, 36, 59, 47, 36, 13, 59, 3, 3, 22],
[80, 66, 77, 21, 1, 80, 55, 26, 10, 5, 80],
[18, 32, 55, 0, 32, 12, 27, 20, 61, 75, 23]])
图片的9宫格
img_arr3 = np.concatenate((img_arr,img_arr,img_arr),axis=1)
img_arr9= np.concatenate((img_arr3,img_arr3,img_arr3), axis=0)
plt.imshow(img_arr9)
常用的聚合操作
sum求和、max最大值、min最小值、mean均值
#sum求和、max最大值、min最小值、mean均值,它们4个用法一致
arr.sum()#计算所有元素的和
1340arr.sum(axis=0) #计算每列元素的和
array([258, 228, 270, 155, 149, 280])
arr.sum(axis=1) #计算每行元素的和
array([265, 326, 275, 325, 149])
常用的数学函数
NumPy 提供了标准的三角函数及反三角函数:sin()、cos()、tan()
numpy.around(a,decimals) 函数返回指定数字的四舍五入值。
参数说明:
a: 数组
decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置
np.sin([3.5,4.6,2.1])
array([-0.35078323, -0.993691 , 0.86320937])
np.around([33.4,51.2,55.8]) #默认decimals为0
array([33., 51., 56.])
np.around([33.4,51.2,55.8], decimals=1) #decimals=1保留一位小数
array([33.4, 51.2, 55.8])
np.around([33.4,51.2,55.8], decimals=-1) #decimals=-1个位数上四舍五入
array([30., 50., 60.])
常用的统计函数
numpy.amin() 和numpy.amax(),用于计算数组中的元素沿指定轴的最小、最大值。
numpy.ptp():计算数组中元素最大值与最小值的差(最大值 - 最小值)极差。
numpy.median() 函数用于计算数组 a 中元素的中位数(中值)
标准差std():标准差是一组数据平均值分散程度的一种度量。所有数据与均值的差的平方和除以元素个数开根号
公式:std = sqrt(mean((x - x.mean())**2))
如果数组是 [1,2,3,4],则其平均值为 2.5。 因此,差的平方是 [2.25,0.25,0.25,2.25],并且其平均值的平方根除以 4,即 sqrt(5/4) ,结果为 1.1180339887498949。
方差var():统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x - x.mean())** 2)。换句话说,标准差是方差的平方根。
python科学计算三剑客_1-python数据分析-数据分析介绍、数据分析三剑客之NumPy相关推荐
- Python科学计算包应用-教你以可视化的方式打开NumPy
前言 NumPy包是python生态系统中数据分析.机器学习和科学计算的主力.它极大地简化了向量和矩阵的操作.Python的一些主要软件包依赖于NumPy作为其基础架构的基础部分(例如scikit-l ...
- 用python画lgx的图_【Python科学计算】matplotlib——python画图
[TOC] 1. 导入 matplotlib 包 import matplotlib.pyplot as plt import numpy as np 2. 折线图 现在绘制一个 二次函数折线图: $ ...
- 【python科学计算发行版】
python科学计算发行版 python是科学计算的有力工具,但在进行计算过程中需要安装很多依赖包,会对使用造成不便,所以总结了一下几个包含丰富科学计算包的python发行版本供参考. Windows ...
- python 科学计算基础教程电子版-Python 科学计算基础 (整理)
Python是一种面向对象的.动态的程序设计语言,具有非常简洁而清晰的语法,既可以用于快速开发程序脚本,也可以用于开发大规模的软件,特别适合于完成各种高层任务. 随着NumPy.SciPy.matpl ...
- python 科学计算基础教程电子版-自学Python 编程基础、科学计算及数据分析
自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 ☆☆☆☆☆ 李金 著 ...
- python科学计算是什么意思_Python科学计算和数据分析(NumPy详细介绍)
本文介绍的科学计算.数据分析必备基础知识. 本文全文约2600字,阅读时间约15分钟,请你耐心观看. 本文使用的开发环境是Python3.8,Numpy版本是1.19,本文的例子全部经过验证,你可以直 ...
- python科学计算基础教程pdf下载-Python科学计算基础教程_PDF电子书
因资源下载地址容易失效,请加微信号359049049直接领取,直接发最新下载地址. 前言 ======================================================= ...
- python科学计算基础教程pdf下载-Python科学计算 PDF 第2版
给大家带来的一篇关于Python相关的电子书资源,介绍了关于Python.科学计算方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小59.5 MB,张若愚编写,目前豆瓣.亚马逊.当当.京东 ...
- python科学计算基础教程pdf下载-python科学计算 第二版 PDF 下载
相关截图: 资料简介: 本书详细介绍Python科学计算中最常用的扩展库NumPy.SciPy.matplotlib.Pandas.SymPy.TTK.Mayavi.OpenCV.Cython,涉及数 ...
最新文章
- vue.js+socket.io打造一个好玩的新闻社区
- 早期的增长黑客 PayPal 如何在2000年初达到每日7%到10%的营收成长?
- 通过system调用Am命令执行动作
- SPOJ COT Count on a tree(主席树+倍增lca)
- Mybatis-plus的相关文章
- python db.commit_python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作。(待日后更新)...
- 大数据平台基本功能有哪些
- 哨兵-1 Sentinel-1数据下载(欧空局)
- IOS微信分享调起微信后立刻返回到app中无法分享的问题
- ch340g电路图5v和3.3v供电电路
- 孝感网站建设多少钱,孝感做企业网站多少钱
- 为何日本手机走不出国门?
- C语言中【变量】的存储类型共有4种类型
- JQuery 模糊匹配(JQuery 选择器模糊匹配、选择指定属性是以给定字符串开始的元素 )
- nginx配置区分移动端和PC端,访问不同域名
- 微信小程序实现波浪动画效果
- 自动拖取win10聚焦壁纸到桌面
- TestDirector自定义管理:用户配置
- 如何设置页面禁止转载,以及如何破解不让转载的解决办法
- Indie 音乐类型扫盲
热门文章
- 新功能:php-laravel记录来访人员的IP以及所在区域
- session与cokkie区别
- 阿里云服务器由于被检测到对外攻击,已阻断该服务器对其它服务器端口的访问...
- BZOJ 2768 [JLOI2010]冠军调查
- ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区...
- 我的iOS学习历程 - OC第九天
- 用yum安装完mysql后没有mysqld的问题
- python运行是哪个键_python – 如何使用回车键调用按钮命令
- android开发蓝牙是否可见开关_如何从后台开启android蓝牙的可见性以及始终保持可见性...
- c语言mc协议,easymc - C语言开发的简易消息通道库