1.NumPy是什么
NumPy(Numerical Python的缩写)是一个开源的Python科学计算模块,其中包含了许多实用的数学函数,用来处理数值型数据。NumPy中,最重要和使用最频繁的对象就是N维数组。
为什么要学习NumPy?
1. 很多更高级的扩展模块都依赖于NumPy,比如pandas
2. NumPy中有计算平均数、中位数等数学相关的内置函数,可以在代码中省去很多的循环语句,帮助我们更加快速和科学地进行计算
3. NumPy提供了一个叫做N维数组的数据结构,它和Python中的列表list类似,但前者的输入输出性能远优于后者
2.N维数组
(1)简介
[...]表示一维数组,和Python中的列表长得很像。[[...]]表示二维数组。
在使用print()输出时,它们的区别在于数组之间的元素是用空格分隔,而列表是以逗号分隔。
一维数组的所有元素都在同一「行」里,一行中可以有很多元素。
在实际上进行输出的时候,数组里面的元素是使用空格分割开来的,但是列表里面的元素是使用的都好进行分割的,因此这个也就是我们从表面上进行区分这个列表和数组的区别;
3.N维数组的创建
(1)想要进行这个数组的创建,首先要安装这个numpy模块,安装numpy非常简单,在终端中输入代码:pip install numpy
即可。
安装完后,下一步就是导入numpy。根据NumPy官方文档的倡导,在导入numpy时通常会使用「np」作为numpy的简写,方便以后调用。
这个在进行这个数组的创建的时候,需要去调用相应的函数np.array()函数,这个函数的参数可以是列表,元组等数据结构;下面的这个案例传递进去的参数就是一个二维数组;
# TODO 使用import导入numpy,并使用"np"作为该模块的简写
import numpy as np
# TODO 将题目中的序列作为参数传入np.array()函数中,并将生成的二维数组赋值给变量arr
arr=np.array([[1,2],[4,5],[7,9],[11,12]])
# TODO 使用print()输出变量arr
print(arr)
4.数组的相关计算
(1)数组和数进行计算
数组和数字进行运算的时候就会把这个数组里面的每一个元素都和这个数字进行相应的运算;
下面的这个就是数组和1这个数字进行运算,这个时候数组里面的每一个元素都会减去1;
# 使用import导入numpy,并使用"np"作为该模块的简写
import numpy as np
# 使用np.array()函数创建数组arr
arr = np.array([[2, 1, 7],
[4, 2, 2]])
# TODO 输出如题所示的运算结果:[[1 0 6] [3 1 1]]
print(arr-1)
(2)相同形状的数组进行计算
这个就要求数组的形状相同,然后对应位置的元素进行计算
# 使用import导入numpy,并使用"np"作为该模块的简写
import numpy as np
# 使用np.array()函数创建数组arrOne
arrOne = np.array([[5, 0], [0, 5]])
# 使用np.array()函数创建数组arrTwo
arrTwo = np.array([[10, 5], [20, 5]])
# TODO 输出如题所示的运算结果:[[15 5] [20 10]]
print(arrOne+arrTwo)
5.Pandas模块
(1)下面展示的就是一个简单的字典,字典有索引,我们上面介绍的数组是可以进行计算的,有没有什么既可以使用索引,同时可以进行计算的结构呢:Pandas模块就有这个功能;
(2)Pandas简介
pandas是一个基于NumPy的模块,它的功能在于数据的筛选清洗和处理,与NumPy模块相比,pandas模块更擅长处理二维数据。
pandas模块主要有Series和DataFrame两种数据结构。
在使用pandas模块最开始,由于pandas不是Python的内置模块,我们需要在代码的开头,将pandas模块导入。
为了让其方便调用,我们通常会将其简写成pd。
# TODO 导入pandas模块,简称pd
import pandas as pd
6.Series序列
(1)简单介绍
Series,中文叫做序列,pandas模块的一种数据类型,
是一个一维的、带索引(index)的数组对象。
(2)实际上这个series序列和字典就是类似的,因为这个都是有索引和对应的数值的;
唯一不同的就是,这个字典里面的东西是没有顺序的,但是这个series里面的东西是有顺序的,我们既可以是使用索引找到对应的数值,也可以使用这个下标找到,因为在默认的情况下面,这个下标就是从0开始的;
(3)Series构造函数
下面的就是这个函数的简单的应用,先导入这个模块,传递进去两个列表,这个函数里面第一个参数就是数值,第二个参数就是对应的索引,只不过在这个地方我们使用这个城市的名字作为索引而已,不指定的话就是用默认的01234………………
# 导入pandas模块,简称pd
import pandas as pd
# 定义两个列表
GDP =[80855, 77388, 68024, 47251, 40471]
rank =[1, 2, 3, 4, 5]
# TODO 使用Series构造函数,传入参数:列表GDP作为值,列表rank作为index
# 构造出的Series赋值给info
info = pd.Series(GDP, index = rank)
# 输出info这个Series
print(info)
(4)函数的参数还可以传递进去数组
下面我们就是用上面的数组的创建的方法,导入数组进行测试,其实这个列表是更常见的参数,只不过这个数组也是会被允许的;
第一行导入的就是序列模块,第二次导入的就是创建数组的模块,然后调用创建数组的函数,和我们的序列的构造函数,数组函数传递的就是一个一维数组,序列构造函数的参数就是一个列表;
# 导入pandas模块,简称pd
import pandas as pd
# 导入numpy模块,简称np
import numpy as np
# TODO 创建一维数组,并赋值给GDP
GDP = np.array([80855,77388,68024,47251,40471])
# 定义列表rank
rank =[1, 2, 3, 4, 5]
# TODO 使用Series构造函数,传入参数:数组GDP作为值,列表rank作为index
# 构造出的Series赋值给info
info = pd.Series(GDP,index = rank)
# 输出info这个Series
print(info)
(5)常量作为函数的参数
我们先导入模块,传递的参数就是常量数组,第一个参数是打印出来的数值,第二个参数就是索引
# 导入pandas模块,简称pd
import pandas as pd
# TODO 使用Series构造函数,传入参数:常量6作为值,列表["a", "b", "c", "d"]作为index,构造出的Series赋值给s
s = pd.Series(6, index=["a", "b", "c", "d"])
# 输出s这个Series
print(s)