数据分析三剑客

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相关推荐

  1. Python科学计算包应用-教你以可视化的方式打开NumPy

    前言 NumPy包是python生态系统中数据分析.机器学习和科学计算的主力.它极大地简化了向量和矩阵的操作.Python的一些主要软件包依赖于NumPy作为其基础架构的基础部分(例如scikit-l ...

  2. 用python画lgx的图_【Python科学计算】matplotlib——python画图

    [TOC] 1. 导入 matplotlib 包 import matplotlib.pyplot as plt import numpy as np 2. 折线图 现在绘制一个 二次函数折线图: $ ...

  3. 【python科学计算发行版】

    python科学计算发行版 python是科学计算的有力工具,但在进行计算过程中需要安装很多依赖包,会对使用造成不便,所以总结了一下几个包含丰富科学计算包的python发行版本供参考. Windows ...

  4. python 科学计算基础教程电子版-Python 科学计算基础 (整理)

    Python是一种面向对象的.动态的程序设计语言,具有非常简洁而清晰的语法,既可以用于快速开发程序脚本,也可以用于开发大规模的软件,特别适合于完成各种高层任务. 随着NumPy.SciPy.matpl ...

  5. python 科学计算基础教程电子版-自学Python 编程基础、科学计算及数据分析

    自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 ☆☆☆☆☆ 李金 著 ...

  6. python科学计算是什么意思_Python科学计算和数据分析(NumPy详细介绍)

    本文介绍的科学计算.数据分析必备基础知识. 本文全文约2600字,阅读时间约15分钟,请你耐心观看. 本文使用的开发环境是Python3.8,Numpy版本是1.19,本文的例子全部经过验证,你可以直 ...

  7. python科学计算基础教程pdf下载-Python科学计算基础教程_PDF电子书

    因资源下载地址容易失效,请加微信号359049049直接领取,直接发最新下载地址. 前言 ======================================================= ...

  8. python科学计算基础教程pdf下载-Python科学计算 PDF 第2版

    给大家带来的一篇关于Python相关的电子书资源,介绍了关于Python.科学计算方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小59.5 MB,张若愚编写,目前豆瓣.亚马逊.当当.京东 ...

  9. python科学计算基础教程pdf下载-python科学计算 第二版 PDF 下载

    相关截图: 资料简介: 本书详细介绍Python科学计算中最常用的扩展库NumPy.SciPy.matplotlib.Pandas.SymPy.TTK.Mayavi.OpenCV.Cython,涉及数 ...

最新文章

  1. vue.js+socket.io打造一个好玩的新闻社区
  2. 早期的增长黑客 PayPal 如何在2000年初达到每日7%到10%的营收成长?
  3. 通过system调用Am命令执行动作
  4. SPOJ COT Count on a tree(主席树+倍增lca)
  5. Mybatis-plus的相关文章
  6. python db.commit_python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作。(待日后更新)...
  7. 大数据平台基本功能有哪些
  8. 哨兵-1 Sentinel-1数据下载(欧空局)
  9. IOS微信分享调起微信后立刻返回到app中无法分享的问题
  10. ch340g电路图5v和3.3v供电电路
  11. 孝感网站建设多少钱,孝感做企业网站多少钱
  12. 为何日本手机走不出国门?
  13. C语言中【变量】的存储类型共有4种类型
  14. JQuery 模糊匹配(JQuery 选择器模糊匹配、选择指定属性是以给定字符串开始的元素 )
  15. nginx配置区分移动端和PC端,访问不同域名
  16. 微信小程序实现波浪动画效果
  17. 自动拖取win10聚焦壁纸到桌面
  18. TestDirector自定义管理:用户配置
  19. 如何设置页面禁止转载,以及如何破解不让转载的解决办法
  20. Indie 音乐类型扫盲

热门文章

  1. 新功能:php-laravel记录来访人员的IP以及所在区域
  2. session与cokkie区别
  3. 阿里云服务器由于被检测到对外攻击,已阻断该服务器对其它服务器端口的访问...
  4. BZOJ 2768 [JLOI2010]冠军调查
  5. ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区...
  6. 我的iOS学习历程 - OC第九天
  7. 用yum安装完mysql后没有mysqld的问题
  8. python运行是哪个键_python – 如何使用回车键调用按钮命令
  9. android开发蓝牙是否可见开关_如何从后台开启android蓝牙的可见性以及始终保持可见性...
  10. c语言mc协议,easymc - C语言开发的简易消息通道库