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
我们再将其按照一维展开:

11 22 33 44 55 66 77 88 99 00

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

11 22 33 44 55
66 77 88 99 00

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

一维数据
python数据可视三大库之numpy库(一:理论知识快速上手)_第1张图片
python数据可视三大库之numpy库(一:理论知识快速上手)_第2张图片
注意python里面是没有基本数据类型里数组的,但我们可以通过numpy库来创建一个数组

二维数据
python数据可视三大库之numpy库(一:理论知识快速上手)_第3张图片
如图是大学排行,我们可以看到这个二维数据是由多个一维组成每一行都可以看成是一组一维数据
多维数据
我们可以看到我们在原二维数据中引入了时间维度,所以这个多维数据可以说是由原二维数据加上一个表示时间的数据组成的新数据
python数据可视三大库之numpy库(一:理论知识快速上手)_第4张图片
高维数据
python数据可视三大库之numpy库(一:理论知识快速上手)_第5张图片
这与我们python中的字典类型是对应的

python中不同数据维度的表示

python数据可视三大库之numpy库(一:理论知识快速上手)_第6张图片
python数据可视三大库之numpy库(一:理论知识快速上手)_第7张图片

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的属性

python数据可视三大库之numpy库(一:理论知识快速上手)_第8张图片
我们来上手试一下:
python数据可视三大库之numpy库(一:理论知识快速上手)_第9张图片
由于我产生了一个一维数组所以a.ndim和a.shape表示都有一点不清楚
我们来进行以下修改:
python数据可视三大库之numpy库(一:理论知识快速上手)_第10张图片
这里将通过reshape()(后面会有介绍)方法将其改造成了一个二维数组,我们可以看到a.ndim变成了2

ndarray数组的元素类型

或许在上面你对a.dtype,dtype(int32)感到疑惑,其实这是ndarray数组的众多元素类型的其中一个
python数据可视三大库之numpy库(一:理论知识快速上手)_第11张图片
python数据可视三大库之numpy库(一:理论知识快速上手)_第12张图片

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

数组的创建和变换

ndarray数组的创建方法

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

方法一:通过python中的列表,元组来创建
python数据可视三大库之numpy库(一:理论知识快速上手)_第13张图片

python数据可视三大库之numpy库(一:理论知识快速上手)_第14张图片
方法二:使用NumPy中函数创建ndarray数组
python数据可视三大库之numpy库(一:理论知识快速上手)_第15张图片
python数据可视三大库之numpy库(一:理论知识快速上手)_第16张图片
python数据可视三大库之numpy库(一:理论知识快速上手)_第17张图片

ndarray数组的变换

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

维度变换:

python数据可视三大库之numpy库(一:理论知识快速上手)_第18张图片

元素类型变换:

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

ndarray数组向列表的转换

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

narray数组的操作

数组切片与索引

一维数组:

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

多维数组:

多维数组的每个维度之间用逗号分隔,单个维度的操作与一维数组相似:
python数据可视三大库之numpy库(一:理论知识快速上手)_第19张图片

数组的运算

数组与标量的运算:

规则:与线性代数里的矩阵一样,数组与标量之间的运算作用于数组每一个元素;
例如:python数据可视三大库之numpy库(一:理论知识快速上手)_第20张图片

一元函数:

python数据可视三大库之numpy库(一:理论知识快速上手)_第21张图片

python数据可视三大库之numpy库(一:理论知识快速上手)_第22张图片

二元函数:

python数据可视三大库之numpy库(一:理论知识快速上手)_第23张图片

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

你可能感兴趣的:(python学习)