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)。换句话说,标准差是方差的平方根。

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

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

相关文章

SIP可靠性(SIP Reliability)

根据RFC3261,SIPUA必须支持TCP及UDP底层传输协议。这两种方式除了使用方式不一样之外,对SIP协议自身的影响主要体现在可靠性处理上。 SIP可靠性机制主要是为了支持不可靠传输层协议,如UDP。当SIP使用的传输层协议为TCP或TLS时,这种…

可以无限增加iPhone 的图标吗?

可以无限增加iPhone 的图标吗?iPhone屏幕上每个图标都对应一个应用程序,目前苹果商店中应用程序数量已经超过40万个,我们又能在手机里放多少呢?有人可能会说那要取决于iPhone的存储容量有多大,确实如此,那么如果假设空…

在日本山区流域使用支持向量机和 bagging、boosting 和 stacking 集成机器学习框架改进滑坡评估--文献阅读

为了在基于过程的模型中准确表示边坡稳定性,有必要包含大量涉及滑坡几何形状和内部结构的局部特征的特征。这包括但不限于斜坡的分层和不连续性、运动裂缝、裂片、陡坡、地垒/地堑结构、降雨、空气和土壤温度、土壤水分含量、许多点的地下水位、地表和深度但是&…

android 蒙版图片带拖动_推荐一个好用小巧的Android引导蒙版(浮层)库

更新:目前该库已更新v2.0版本,修改了调用api,详细使用可以看:可能是最好用的Android引导层库前言每当一个项目开发一个新功能,总会想办法及时让用户得知有这样一个新功能,这时通常会采用引导页或者蒙版(浮层…

用户代理行为

概述 用户代理分两种:UAC和UAS。区分的依据在于请求方和响应方。 当一个请求发生之时,即使用某个方法,根据请求方和响应方产生了UAC和UAS,从而可以建立起事务(Transaction)来。所以UAC和UAS是对某个事务而言…

AX 2009 界面伸缩功能

界面伸缩功能 在一个界面下,放置多个Grid之后,数据太多,要有个能推拉伸缩的功能,如下图: 中间横条可以上下拉动,折叠处可以关闭显示整个Grid 横条要代码实现,折叠只要设置一下Group就行。 纵向空…

使用增强回归树和随机森林模型进行溪流水质预测--文献阅读

流域特征和气候变量(例如地形、土壤、气候数据)也会影响河流水质。例如,陡坡可能会通过将污染物转移到溪流中来影响溪流水质,从而导致水质恶化。同样,土壤特性也会影响水质。例如,以母岩为主的流域显示出较…

解决方案架构师我需要懂代码吗_架构师不写代码,能行吗?

原标题:架构师不写代码,能行吗?从什么时候起,技术角色的提升就意味着脱离技术与交付?CTO 不写代码已经引起诸多争议了,架构师也不写代码,能行吗?就目前看来这似乎没什么问题。毕竟&a…

机器学习在地质灾害的文章--文献阅读

第一篇 Improved landslide assessment using support vector machine with bagging, boosting, and stacking ensemble machine learning framework in a mountainous watershed, Japan | SpringerLinkHeavy rainfall in mountainous terrain can trigger numerous landslide…

取消一个请求(Cancel)

CANCEL请求,就像名字所说的,是用来取消客户端发起的上一个请求的。 CANCEL请求UAS去终止上一个请求并且对上一个请求产生一个错误的应答。CANCEL对UAS已经给出终结应答的请求无效。所以,CANCEL请求的最大用处是取消需要服务器长时间处理的请求…

NYOJ88(数论)

题意明确,让计算出起始有m个金片的汉诺塔金片全部移动到另外一个针上时需要移动的最少步数是多少?(由于结果太大,现在只要求算出结果的十进制位最后六位) 解题思路:大家都很熟悉汉诺塔求移动次数公式为f(n1…

Linq 学习笔记(二)

Linq 学习笔记(二) 下面就来介绍一些查询的示例: 1。Linq查询 var racers from r in Formula1.GetChampions()where r.Wins > 15 && (r.Country "Brazil" || r.Country "Austria") select r;foreach (var …

机器学习在水文地质方面的文章--文献阅读

第一篇 Ensemble machine learning paradigms in hydrology: A review - ScienceDirecthttps://www.sciencedirect.com/science/article/pii/S0022169421003139?via%3Dihub第二篇 Stream water quality prediction using boosted regression tree and random forest models …

查询能力(SIP OPTIONS)

SIP方法OPTIONS允许一个UA来查询另外一个UA或者proxy服务器的能力。这个提供客户端一个手段来查询服务端支持的方法,内容类型,扩展,codecs等等。比如,在客户端试图在INVITE请求头中增加一个请求字段选项的时候,它并不知…

单体预聚合的目的是什么_高分子化学实验指导书-修改-2012

高分子化学实验指导书任课教师姓名:王小慧王小英所用教材:《高分子化学实验》何卫东主编中国科学技术大学出版社选读参考书:《高分子化学实验》梁晖卢江主编化学工业出版社一、教学形式1、课前,学生通过阅读参考书和《高分子化学实…

MemDC,GDI绘制注意点

最近绘制老犯同样的错误,记录下: 1.MemDC中的MemBmp大小一定要设定好,经常设小了,后面的绘不出来,同时最后dc.bitblt时,大小一定要和MemBmp 一致,同样经常是MemBmp必变了,bitblt的rcDest没变&am…

基于集成学习的不平衡数据集分类问题研究--文献阅读

参考文献 基于集成学习的不平衡数据集分类问题研究 - 中国知网https://kns.cnki.net/kcms/detail/detail.aspx?dbcodeCMFD&dbnameCMFD202201&filename1021697818.nh&uniplatformNZKPT&vK9J_5NETTyZXPhDr5D6KwISCv2zm0skRm7rEZ0KmYS0Yv_zs562Re8oiwR5h_ylK 文…

SIP注册

注册服务为特定地区的位置服务创建绑定关系,这个绑定关系是用来建立包含一个或者多个联系地址的address-of-recordURI。因而,当那个地区的proxy接收到一个请求,这个请求的Request-URI和address-of-record的记录匹配,那么这个proxy…

profile 安卓work_androidWorkProfileGeneralDeviceConfiguration 资源类型

androidWorkProfileGeneralDeviceConfiguration 资源类型androidWorkProfileGeneralDeviceConfiguration resource type2020/9/22本文内容命名空间:microsoft.graphNamespace: microsoft.graph注意: 适用于 Intune 的 Microsoft Graph API 需要适用于租户…

[读书笔记]TCP/IP详解V1读书笔记-1

TCP数据单元:tcp segment UDP数据单元:udp datagram IP数据单元:IP datagram 链路层单元:frame --------------------------------------- 应用层: SMTP:简单邮件传输协议 FTP:文件传输协议 DNS…