视频学习地址为 http://www.icourse163.org/course/BIT-1001870002 是北京理工大学嵩老师的课。本文主要是笔记。
开发环境:Anaconda
Anaconda集成了许多数据分析的第三方库 比如numpy,pandas,还有可视化绘图的matplotlib
下面开始介绍numpy:
在Python中列表[]可以存储不同类型的元素,但是有时会给我们计算带来麻烦,因此numpy设计了一种数组类型ndarray
在python中如果我们要计算 两二列表 a,b a*3 +b*2的值 代码如下
a = [1,2,3]
b = [3,2,1]
c=[]
for i in range(len(a)):
c.append(a[i]*3 +b[i]*2)
然而我们用numpy的话
import numpy as np
a = np.array([1,2,3])
b = np.array([3,2,1])
c = a*3 +b*2
即可 numpy把它定义的ndarray当成一组向量来计算
ndarray有如下属性:
ndim :维度
shape:行列数
size:有多少个元素 即行数*列数
dtype:元素的类型
itemsize:每个元素的大小(字节)如图
ndarray数组的创建和变换:
1.从python的列表,元祖等类型创建ndarray数组
x = np.array(list/tuple,dtype=np.float32) 可以用dtype来指定数据类型,缺省时numpy根据数据情况关联一个dtype类型
2,从numpy的函数创建ndarray数组
np.arange(n) 放回一个ndarray数组 元素从0到n-1 和arange类似
np.ones(shape)生成一个全是1的数组,shape为元祖类型
np.zeros(shape)生成一个全是0的数组,shape是元祖类型
np.full(shape,val)根据shape生成一个数组,元素全为val
np.eyes(n)生成一个n介单位矩阵
np.zeros_like(a)根据a的shape生成一个全为0的数组
np.ones_like(a)根据a的shape生成一个全为1的数组
np.full_like(a,val) 根据a的shape生成一个全为val的数组
3.根据numpy的其他函数生成ndarray数组
np.linspace(start,end,n) 提供起始值,结束值,和间距数生成ndarray数组
np.concatenate((a,b))将2个或多个数组合并形成一个新的数组 concatenate有串联的意思
图:
ndarray数组的维度变换
.reshape(shape) 不改变数组元素,返回一个shape形的数组,元数组不变
.resize(shape) 功能与reshape相同,但是会改变原数组
.swapaxes(ax1,ax2)将数组n个维度中的2个维度调换
.flatten()对数组进行降维,放回折叠后的一维数组,原数组不变
ndarray数组的类型转换
new_a = a.astype(new_type)
ndarray数组转化为列表
a.tolist()
下面开始ndarray数组操作的介绍
一维数组的索引和切片,与python中的列表操作类似
多维数组的索引和切片
ndarray数组的运算
首先我们要明确的是数组与标量之间的运算 作用于数组的每一个元素
a = np.arange(24).reshape(2,3,4)
a.mean() a的算术平均值
a/a.mean()
np.abs(x) np.fabs(x) 求绝对值
np.sqrt(x) 求平方差
np.square(x)求数组各元素的平方
np.log(x) np.log10(x) np.log2(x) 以自然对数,10, 2 为底的对数
np.ceil(x) np.floor(x) 向上取整和向下取整
np.rint() 进行四舍五入
np.modf() 将数组各元素的小数部分和整数部分以2个独立的数组返回
np.cos(x) np.sin(x) np.cosh(x) np.sinh(x) np.tan(x) np.tanh(x) 三角函数(普通型和双曲型)
np.exp(x) 计算数组的指数值
np.sign(x) 计算数组的符号值 1(+) 0 -1(-)
二元运算
+ - * / **
np.maximum(x,y) np.fmax()
np.minimum(x,y) np.fmin() 元素级最大/小值运算
np.mod(x,y) 元素级模运算
np.copysign(x,y) 将y中各元素符号赋给x
> < >= == <=比较二个数组产生bool数组
溜了