作者:小蜗牛爱学习
来源:https://blog.csdn.net/qq_42755939/article/details/106953651?utm_source=app

一、什么是 Numpy?

NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库 [1] 。

二、创建数组

了解了numpy的概念我们就来感受一下一下它的强大吧!

Numpy三种创建数组的方法

1、调用numpy的array()方法将列表转化为数组

arr01 = np.array([1,2,3])
print("array01的类型:",type(arr01)) #array01的类型: <class 'numpy.ndarray'>
print(arr01)#[1 2 3]

2、调用numpy的array()方法将range对象转化为数组

arr02 =np.array(range(6))print("array02的类型:",type(arr02),arr02)#array02的类型: <class 'numpy.ndarray'> [0 1 2 3 4 5]

3、调用用numpy的arange()方法生成数组

arr03 = np.arange(10)print("array03的类型:",type(arr03),arr03)#array03的类型: <class 'numpy.ndarray'> [0 1 2]

三、数组的数据类型

1、Numpy支持多种数据类型

numpy数组支持多种数据类型:

1、整型

类型 代码
int8 i1
int16 i2
int32 i4
int64 i8

2、浮点型

float16 f2
float32 f4
float64 f8

3、复数:complex_ complex64 complex128

4、bool类型:true false

#01、int32
arr04 = np.arange(3)
print(arr04,arr04.dtype) #[0 1 2] int32#02、float64
data = [random.random() for i in range(10)]
print(data) #[0.4495169679906501, 0.37812776730917963, 0.27453827162750943]arr05 = np.array(data)
print(arr05,arr05.dtype) #float64

2、Numpy的round()方法

保留几位小数,但是数据类型不变

arr05 = np.round(arr05,3)
print(arr05,arr05.dtype) #[0.44951697 0.37812777 0.27453827] float64

3、指定创建的数组的数据类型

#int8
arr06 = np.arange(10,dtype="i8")
print(arr06,"数据类型:",arr06.dtype) #[0 1 2 3 4 5 6 7 8 9] 数据类型: int64#float64
arr07 = np.array(range(10),dtype="float64")
print(arr07,arr07.dtype) #[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.] float64arr08 = np.array([1,1,0,0,1,0,1,1],dtype="bool")
print(arr08,arr08.dtype)  #[ True  True False False  True False  True  True] bool

4、修改数组的数据类型

使用astype()方法修改数组的数据类型

arr09 = np.array([2.1,1.6,10.3],dtype="float")
arr09 = arr09.astype("i1")
print(arr09,arr09.dtype) #[ 2  1 10] int8arr10 = np.array([1,1,0,1,0,0,1])
print(arr10.dtype) #int32
print(arr10.astype("bool")) #[True True False  True False False  True]

四、数组的形状/维度

1、Numpy的shape属性

#1、使用numpy的shape属性可以返回数组的维度
arr11 = np.array(range(10))print(arr11,arr11.shape)#这是个一维数组,返回的是(10,)表示他是一维数组,有10个元素
arr12 = np.array([[1,2,3],[4,5,6]])print(arr12,arr12.shape)  #这是个二维三列数组(2, 3)arr13 = np.array([[1,2,3],[4,5,6],[7,8,9]])print(arr13,arr13.shape)  #这也是个二维数组(3, 3)arr14 = np.array([[[1,2],[2,3],[3,4]],[[4,5],[5,6],[7,8]],[[9,10],[11,12],[13,14]],[[15,16],[17,18],[19,20]]])
print(arr14,arr14.shape) #这是个三维数组(4, 3, 2),4表示有4块数据,3表示每块有三行,2表示每行有2列数据

2、转化数组维度

reshape()方法

这个方法返回的是一个新的数组,原来的数组不变

arr15 = np.array([[[1,2],[2,3],[3,4]],[[4,5],[5,6],[7,8]],[[9,10],[11,12],[13,14]],[[15,16],[17,18],[19,20]]])
arr16 = arr15.reshape((3,8))#将arr15转化为二维数组
print(arr16,arr16.shape) #(3, 8)arr17 = arr15.reshape((24,))
print(arr17)#当不知道一个数组的形状时,转化为一维数组的方法一:
t1 = arr15.shape[0]
t2 = arr15.shape[1]
t3 = arr15.shape[2]
arr18 = arr15.reshape(t1*t2*t3,)
print(arr18)

flatten()方法

直接将多维数组转化为一维数组,他是展开,扁平化的意思

#当不知道一个数组的形状时,转化为一维数组的方法:使用方法flatten()方法
arr19 = arr15.flatten()
print(arr19)

五、数组的计算

1、广播原则

规则1:如果两个数组的维度不相同,那么小维度数组的形状将会在最左边补1.

规则2:如果两个数组的形状在任何一个维度上不匹配,那么数组的形状会沿着维度为1扩展以匹配另外一个数组的形状。

规则3:如果两个数组的形状在任何一个维度上都不匹配并且没有任何一个维度为1,那么会引起异常。

2、数组的计算

数组与数的计算

import numpy as np#创建一个二维三列数组
arr01 = np.array([[1,2,3],[4,5,6],[7,8,9]])
#1、加
n = 5
arr02 = arr01 + n
print(arr02) #[[ 6  7  8] [ 9 10 11] [12 13 14]]#2、减
arr03 = arr01 - n
print(arr03)#[[-4 -3 -2] [-1  0  1] [ 2  3  4]]#3、乘
arr04 = arr01 * n
print(arr04)#[[ 5 10 15] [20 25 30] [35 40 45]]#4、除
arr05 = arr01 / n
print(arr05)#[[0.2 0.4 0.6] [0.8 1.  1.2] [1.4 1.6 1.8]]

数组与数组的计算

1、数组与数组之间可以进行加、减、乘、除、指数、求倒数、求相反数、位运算等

2、数组与数组计算分两类:

①:相同形状的数组 对应相互加减等

②:不同形状的数组 遵循广播原则

① 相同形状的数组
#1、形状相同的数组之间的运算
t1 = np.array(range(2,8)).reshape(2,3)
t2 = np.arange(4,10).reshape(2,3)
t01 = t1 - t2
t02 = t1 + t2
t03 = t1 * t2
t04 = t1 / t2
t05 = t1**2
print("t1:",t1)     #t1: [[2 3 4] [5 6 7]]
print("t2:",t2)     #t2: [[4 5 6] [7 8 9]]
print("t01:",t01)   #t01: [[-2 -2 -2][-2 -2 -2]]
print("t02:",t02)#t02: [[ 6  8 10] [12 14 16]]
print("t03:",t03)#t03: [[ 8 15 24] [35 48 63]]
print("t04:",t04.round(2))#t04: [[0.5  0.6  0.67] [0.71 0.75 0.78]]
print("t05:",t05)#t05: [[ 4  9 1
6] [25 36 49]]
② 不同形状的数组
#2、形状不同的数组之间的运算,遵循广播法则#eg1:
a1 = np.arange(2,8).reshape(2,3)
a2 = np.arange(3)
print("a1:",a1) #a1: [[2 3 4] [5 6 7]]
print("a2:",a2) #a2: [0 1 2]
print("a1+a2:",a1 + a2) #a1+a2: [[2 4 6] [5 7 9]]#eg2:
b1 = np.arange(1,4).reshape(3,1)
b2 = np.arange(3,6)
print("b1:", b1) #b1: [[1] [2] [3]]
print("b2:", b2) #b2: [3 4 5]
print("b1+b2:",b1 + b2)#b1+b2: [[4 5 6] [5 6 7] [6 7 8]]#eg3:
c1 = np.array([[1,2,8],[2,3,5],[6,7,10]])
c2 = np.array([1,2,3])
print("c1+c2:",c1 + c2) #c1+c2: [[ 2  4 11] [ 3  5  8] [ 7  9 13]]

eg1结果分析:

1、 a1 = [[2 3 4] [5 6 7]] a2 = [0,1,2] 两个数组的形状为 a1.shape=(2,3),a2.shape=(3,)

2、 根据规则1: 数组a2的维度更小,所以在其左边补1,变为a2.shape -> (1,3),此时a1.shape=(2,3),a2.shape=(1,3),即a1 = [[2 3 4] [5 6 7]] a2 = [[0 1 2]]

3、 根据规则2: a1,a2的形状还是不匹配,所以a2会沿着维度为1的方向扩展,变成a2.shape=(2,3),

即a1 = [[2 3 4] [5 6 7]],a2 = [[0 1 2] [0 1 2]],现在两个数组的形状匹配了,可以看到它们的最终形状都为(2,3)

eg2结果分析:

1、 b1 = [[1] [2] [3]] b2 = [3,4,5]两个数组的形状为 b1.shape=(3,1),b2.shape=(3,)

2、 根据规则1:数组b2的维度更小,所以在其左边补1,变为b2.shape -> (1,3),此时b1.shape=(3,1),b2.shape=(1,3),即b1 = [[1] [2] [3] b2 = [[3 4 5]]

3、 根据规则2:b1,b2的形状还是不匹配,所以b1,b2会沿着维度为1的方向扩展,

变成b1.shape=(3,3),b2.shape=(3,3),即b1 = [[1 1 1] [2 2 2] [3 3 3]],b2 = [[3 4 5] [3 4 5] [3 4 5]]

现在两个数组的形状匹配了,可以看到它们的最终形状都为(3,3)

推荐阅读:

  • 我精心整理的 136 页 Excel 数据透视表 PDF 文件!【附获取方式】
  • 100天从 Python 小白到大神的学习资源,都在这了。
  • 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏…
  • 我花了五个小时的时间,将全部文章详细整理出来了,千万不要错过!

关注微信公众号『杰哥的IT之旅』,后台回复“1024”查看更多内容,回复“微信”添加我微信。

Python 数据分析之 Numpy(一)相关推荐

  1. Python 数据分析之Numpy

    Python 数据分析之Numpy Python有着大量功能强大的第三方库.这些第三方库可以大大地扩充Python的功能,我们在实际使用中往往也离不开这些第三方库. NumPy是Python的一种开源 ...

  2. Python数据分析训练营——Python数据分析之Numpy

    文章目录 Python数据分析之Numpy 1.Numpy的数组对象及其索引 数组上的数学操作 产生数组 数组属性 索引和切片 多维数组及其属性 多维数组索引 多维数组切片 切片是引用 花式索引 一维 ...

  3. Python数据分析 3.numpy数据科学库

    Python数据分析 3.numpy基础库 1.数组的创建 import numpy as npt1 = np.array([1,2,3,]) print(t1) print(type(t1))t2 ...

  4. Python数据分析之Numpy,Pandas,Matplotlib Pyplot

    文章目录 一.Python数据分析之Numpy 0.数组的引入 1.创建数组 2.数组的属性 3.数组的基本操作 3.1 索引 3.2 切片 3.3花式索引 3.4 "不完全"索引 ...

  5. Python数据分析笔记——Numpy、Pandas库

    Python数据分析--Numpy.Pandas库 总第48篇 ▼ 利用Python进行数据分析中有两个重要的库是Numpy和Pandas,本章将围绕这两个库进行展开介绍. Numpy库 Numpy最 ...

  6. python 数据分析5 NumPy 基础:数组和矢量计算

    系列文章:Python 数据分析 文章目录 五.NumPy 基础:数组和矢量计算 1.n维数组对象 ndarray 创建 dtype 数组运算 基本的索引和切片 一维数组 二维数组 布尔型索引 花式索 ...

  7. Python数据分析(二): Numpy技巧 (4/4)

    numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性. 第一部分: http ...

  8. python数据分析numpy_(转)Python数据分析之numpy学习

    Python模块中的numpy,这是一个处理数组的强大模块,而该模块也是其他数据分析模块(如pandas和scipy)的核心. 接下面将从这5个方面来介绍numpy模块的内容: 1)数组的创建 2)有 ...

  9. Python 数据分析之 Numpy (二)

    作者:小蜗牛爱学习 来源:https://blog.csdn.net/qq_42755939/article/details/107032142 一.Numpy读取文件 loadtxt()方法 num ...

  10. Python数据分析入门--Numpy基础学习笔记

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 NumPy基础 1.NumPy nadarray:多维数组对象 1.1ndarray及其数据类型 1.2NumPy数组 ...

最新文章

  1. 关于Vue.js2.0生命周期的研究与理解
  2. python输入程序_Python 程序设计中的输入与输出介绍
  3. 方正高影仪安装方法_铝合金门窗是怎么安装的?
  4. oracle数据库将一列的值拼接成一行,并且各个值之间用逗号隔开
  5. 软件需求分析(补发)
  6. php对接xenserver,XenServer虚拟机管理工具XenCenter安装配置图文教程
  7. excel宏的使用图解教程
  8. PFPLD 人脸关键点检测
  9. 【评测】常用免疫细胞培养基
  10. 互联网大脑加速进化,2018年类脑智能巨系统在中国突然爆发
  11. Oracle官网登录用户名密码
  12. 实现android wifi语音通话功能吗,Android下自写类似系统wifi管理功能的实现
  13. 给定一个递增序列,a1 a2 ...an 。定义这个序列的最大间隔为d=max{ai+1 - ai }(1≤in),现在要从a2 ,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小...
  14. 初识c语言加操作系统
  15. Delphi操作Word,Excel替换
  16. usercity 小程序_微信小程序API 用户信息
  17. 孩子,我想当富豪的妈妈---一位犹太妈妈的金钱观
  18. C#与Halcon联合编程 1
  19. 微服务架构下该如何技术选型呢?
  20. 计算机禁止用户登录,win7系统禁止显示用户登录信息的设置方法

热门文章

  1. 案例分享:Qt西门子机床人机界面以及数据看板定制(西门子通讯,mysql数据库,生产信息,参数信息,信息化看板,权限控制,播放器,二维图表,参数调试界面)
  2. 分享,好看的PPT模板网站
  3. 关于刀具类的RFID资产管理解决方案-RFID固定资产管理-新导智能
  4. visio中将图片改为平行四边形_visio中怎么画平行四边形并图色呢?
  5. ubuntu详细教程[软件安装,命令大全,常用快捷键]
  6. 基于MATLAB的数字图像处理系统
  7. 华硕主板如何用u盘启动计算机,华硕主板u盘启动是按f几_华硕主板BIOS设置U盘启动的方法-win7之家...
  8. 从数据下载到极速土地利用变化图制作
  9. c语言英语文库,C语言基本入门英语单词
  10. Vista恢复原主题