python数据可视三大库之numpy库(一:理论知识快速上手)

这是继我的上一篇博客

《环境安装血泪史之人工智能劝退篇(anaconda3+cuda10.2+cudnn7.6+tensorflow-gpu2.1.0)win10系统的gpu版》后的关于tensorflow2.0的学习第一篇前奏笔记,要学习机器学习建议先了解以下python有关数据分析的第三方库,这里的推荐课程 中国大学mooc 北京理工大学开设的python数据可视化教程,里面系统讲解了numpy,matplotlib以及pandas库,建议在学习课程前先安装anaconda。
这篇笔记是对mooc所讲numpy库的个人整理,资料来源于 中国大学mooc 北京理工大学开设的python数据可视化教程

Numpy的介绍

NumPyNumPy是一个开源的Python科学计算基础库,包含:
•一个强大的N维数组对象ndarray
•广播功能函数•整合C/C++/Fortran代码的工具
•线性代数、傅里叶变换、随机数生成等功能NumPy是SciPy、Pandas等数据处理或科学计算库的基础

数据维度

维度:一组数据的组织形式

例如我现在有一组数据:11,22,33,44,55,66,77,88,99,00
我们再将其按照一维展开:

11223344556677889900

我们再将其按照一维展开:

1122334455
6677889900

我们可以看到数据在二维和一维的展开形式不同。不同维度他的组织形式不同

一维数据
在这里插入图片描述
在这里插入图片描述
注意python里面是没有基本数据类型里数组的,但我们可以通过numpy库来创建一个数组

二维数据
在这里插入图片描述
如图是大学排行,我们可以看到这个二维数据是由多个一维组成每一行都可以看成是一组一维数据
多维数据
我们可以看到我们在原二维数据中引入了时间维度,所以这个多维数据可以说是由原二维数据加上一个表示时间的数据组成的新数据
在这里插入图片描述
高维数据
在这里插入图片描述
这与我们python中的字典类型是对应的

python中不同数据维度的表示

在这里插入图片描述
在这里插入图片描述

Numpy 数组对象:ndarray

N维数组对象:ndarray

ndarray是一个多维数组对象,由两部分构成:
1•实际的数据
2•描述这些数据的元数据(数据维度、数据类型等)
ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始

Python已有列表类型,为什么需要一个数组对象(类型)?
1•数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据
2•设置专门的数组对象,经过优化,可以提升这类应用的运算速度

我们上个例子来对比一下python对列表的传统操作以及numpy的数组对象操作的区别
假设:我们有一组数据A=[1,2,3,4,5,6],我们想知道他所有元素的平方
传统上python需要使用循环

def A_square():
	A=[1,2,3,4,5,6]
	C=[]
	for i in range(len(A)):
		C.append(A[i]**2)
	

而我们通过创建一个ndarray数组对象可以不用循环

import numpy as np#引入numpy库
def A_square():
	A=np.array([1,2,3,4,5,6])#ndarray在程序里的别名叫做array
	C=A**2

ndarray的属性

在这里插入图片描述
我们来上手试一下:
在这里插入图片描述
由于我产生了一个一维数组所以a.ndim和a.shape表示都有一点不清楚
我们来进行以下修改:
在这里插入图片描述
这里将通过reshape()(后面会有介绍)方法将其改造成了一个二维数组,我们可以看到a.ndim变成了2

ndarray数组的元素类型

或许在上面你对a.dtype,dtype(int32)感到疑惑,其实这是ndarray数组的众多元素类型的其中一个
在这里插入图片描述
在这里插入图片描述

ndarray的元素类型ndarray为什么要支持这么多种元素类型?对比:Python语法仅支持整数、浮点数和复数3种类型
•科学计算涉及数据较多,对存储和性能都有较高要求
•对元素类型精细定义,有助于NumPy合理使用存储空间并优化性能
•对元素类型精细定义,有助于程序员对程序规模有合理评估

数组的创建和变换

ndarray数组的创建方法

1.•从Python中的列表、元组等类型创建ndarray数组
2.•使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等
3.•从字节流(raw bytes)中创建ndarray数组
4.•从文件中读取特定格式,创建ndarray数组

方法一:通过python中的列表,元组来创建
在这里插入图片描述

在这里插入图片描述
方法二:使用NumPy中函数创建ndarray数组
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ndarray数组的变换

对于创建后的ndarray数组,可以对其进行维度变换和元素类型变换

维度变换:

在这里插入图片描述

元素类型变换:

主要有astype方法:a.astype(new_type),()里填上要转换成的元素新类型。astype()方法一定会创建新的数组(原始数据的一个拷贝),即使两个类型一致

ndarray数组向列表的转换

ls = a.tolist()这个方法将a数组变成一个python列表

narray数组的操作

数组切片与索引

一维数组:

一维数组的索引切片操作和python序列的索引操作相似

多维数组:

多维数组的每个维度之间用逗号分隔,单个维度的操作与一维数组相似:
在这里插入图片描述

数组的运算

数组与标量的运算:

规则:与线性代数里的矩阵一样,数组与标量之间的运算作用于数组每一个元素;
例如:在这里插入图片描述

一元函数:

在这里插入图片描述

在这里插入图片描述

二元函数:

在这里插入图片描述

这份笔记是关于numpy的基本操作的理论知识,比较简单。大部分图片来自mooc北京理工大学嵩天老师的python数据可视化课程
下一份博客,我将根据这份笔记,每个知识点每个函数给出一个例子

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值