0.库的部署
通过安装anaconda可以便捷地创建拥有不同库的环境,但直接pip向计算机的python环境安装也可行,启用一个库时,需要使用import。
库与py的关系如图模组之于游戏,库为py提供了更多新的代码或是更便捷高校的代码,使用py进行特定的工作时,安装相关库可使写程序事半功倍。
1.1.1 numpy库:array数组
array数组是numpy库提供的核心对象之一,其功能与py本体的list类似,但功能更加强大且更适合储存数据以进行数据分析,如支持更多的查询指令(效率远高于for遍历),只允许储存同一类型的数据,可创建多个维度等等。
第一种创建array的方法:
输出:
在创建array时就可对其进行配置,具体配置方法如下:
除此之外,你也可以在创建数组之后对其属性进行查询,如下图为array本身的属性:
示例:
输出:
便捷地创建数组的方式:
1.arange
类似于py本体中range代码,start=起始数字,stop=结束数字,step=步长。
2.ones
(shape的用法参考前面)
3.ones_s_like
格式中,x代表一个已存在的数组,该代码会创建一个与该数组形状相同,但元素全替换为1的数组。
将上述代码中的ones替换为zeros,即可产生类似但全为0的数组。
4.empty/empty_like
注意,里面的并不一定是0,慎用。
empty_like()同理。
5.full/full_like
例子:
6.random
7.reshape
保留元素内容,重置数组维度。
8.数组整体操作
对数组的任何操作,都会投射到数组的每一个元素上:
而两个数组相加减时,也会项对项的进行加减。
数学上的矩阵相乘计算
前置知识:
数学上,向量(一维数组)与矩阵相乘,运算遵循以下法则:
若向量是行向量且与矩阵的行元素个数相同,则结果也是行向量1,例子:
a= [1 2 3]
[4 5 6]
b = [1 2 3]
a x b =[1x1+2x2+3x3 1x4+2x5+3x6]
=[14 32]
即:个对个相乘之和
numpy的np.dot(数组a,数组b)支持这种计算。
向量相乘,直接个对个,0+1+4+9+16=30
数学上,对于两个矩阵A与B,AxB代表以A的每一行乘以B的每一列。例子:
结果的意思是:
A的第一行与B的第一列元素一对一相乘的结果 A的第一行与B的第二列一对一相乘的结果
A的第二行与B的第一列元素一对一相乘的结果 A的第二行与B的第二列一对一相乘的结果
显然,矩阵相乘要求前矩阵一行的元素个数等于后矩阵一列的元素个数,同时,矩阵运算有前后要求,故不满足交换率,也不满足消去律。
同样的,np.dot()也支持这种计算:
其它数学函数:
np.abs(),括号内数组所有元素变为绝对值。
(补充:np.pi即Π)
(补充:e+a或e-a代表科学计数法,a是一个数字,这一形式指e前面的数要乘10的a或-a次方才是最终结果,图中e+16指近乎无穷大,e-16指近乎无穷小)
np.cos() , np.sin() , np.tan(),字面意思。
log(x)默认是取lnx,需要更改底数要用换底公式,如图。
聚合函数:
axis=0:求每一列的最大值,axis=1反之。
布尔型数组:
数组内部同样支持储存布尔类型数据,且支持整体判断与单对单的判断。
np.flipud() 反转数组
True与False数量的查询
注:np.random.normal(均值,标准差,元素个数)
布尔型数组作为掩码
即一种使用布尔类型数据作为索引,取出数组内数据的方法。
基于元素自身特征的查询