python中differ_python 基础复习(一)

一、python基础

1. 列表推导式和匿名函数

在生成一个数字序列的时候,在Python中可以如下写出:

但是这样的方式过于复杂,因此可以利用列表推导式简化写法。

(1)[ * for i in * ] 这个就是列表推导式写法, 第一个* 表示映射函数,函数中的 i 为后面的 i 指代的内容,第二个 * 表示迭代对象所以上述生成数字序列的过程又可以用以下简化写法

(2)定义一个函数的过程,在代码量庞大的时候显得累赘,不利于代码的可读性,所以当一个函数只在此过程使用,其他地方不用调用的时候,可以使用匿名函数,省去定义的过程,既简洁,又可读,且节省时间。

(3)对于上述的这种列表推导式的匿名函数映射,Python中提供了map函数来完成,它返回的是一个map对象,需要通过list转为列表:

注意:对于多个输入值的函数映射,可以通过追加迭代对象实现:

【补充】

① 列表表达式还支持多层嵌套,如下面的例子中第一个for为外层循环,第二个为内层循环:

②语法糖:带有if选择的条件赋值,其形式为value=a if condition else b:

条件赋值结合列表推导式生成列表

2. zip对象与enumerate方法

2.1 zip函数

zip函数能够把多个可迭代对象打包成一个元组构成的可迭代对象,它返回了一个zip对象,通过tuple,list可以得到相应的打包结果:

2.2 enumerate函数

enumerate是一种特殊的打包,它可以在迭代时绑定迭代元素的遍历序号:

当需要对两个列表建立字典映射时,可以利用zip对象:

dict函数将zip中的第一个列表元素作为字典的键,第二个列表元素作为字典的值

2.3 解压缩函数

二、numpy基础

1.np数组的构造

(1) 基于array构造

(2)等差序列:np.linspace,np.arange

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

在指定的间隔内返回均匀间隔的数字。返回num均匀分布的样本,在[start, stop]。

np.arange([start, ]stop, [step, ]dtype=None)start:可忽略不写,默认从0开始;起始值

stop:结束值;生成的元素不包括结束值

step:可忽略不写,默认步长为1;步长

(3)特殊矩阵zeros,eye,full

(4)随机矩阵:np.random

最常用的随机生成函数为rand,randn,randint,choice,它们分别表示0-1均匀分布的随机数组、标准正态的随机数组、随机整数组和随机列表抽样:

## np.random.rand —— 生成随机数数组

## np.random.randn —— 生成满足N(0,1)之间的标准正态分布的数组

## np.random.randint—— 生成随机整数

numpy.random.randint(low, high=None, size=None, dtype='l')

2) 生成一维整数数组

3) 生成多维数组

## np.random.choice —— 从给定的列表中以一定的方式和概率抽取结果

2. numpy数组的变形与合并

2.1 转置 T

2.2 合并 r_ , c_对于二维数组, r_ 和 c_ 分别表示上下合并和左右合并:

r_ : rows的首字母,表示在行上进行相加

c_ : columns的首字母,表示在列上进行相加

2.3 维度变换 reshape

3. 数组索引方法1:slice,[start,end,step]

方法2:直接传入列表指定维度的索引

此外,还可以利用 np.ix_ 在对应的维度上使用布尔索引,但此时不能使用 slice 切片

4. 常用函数

为了简单起见,这里假设下述函数输入的数组都是一维的。

4.1 where

where 是一种条件函数,可以指定满足条件与不满足条件位置对应的填充值

4.2 nonzero,argmax,argmin

3个函数均返回索引,nonzero返回非0元素索引值,argmax和argmin返回最大和最小值对应的索引

4.3 any,all

# any(x) 判断x中是否有一个非零,非空对象,则返回 True ,否则返回 False

#all(x) x中所有元素全为 True 或非零元素时返回 True ,否则返回 False

4.4 cumprod,cumsum,diff

# cumprod, cumsum 分别表示累乘和累加函数,返回同长度的数组,

# diff 表示和前一个元素做差,由于第一个元素为缺失值,因此在默认参数情况下,返回长度是原数组减1

# cumulative:累计的,累加的

4.5 统计函数

常用的统计函数包括 max, min, mean, median, std, var, sum, quantile ,其中分位数计算是全局方法,因此不能通过 array.quantile 的方法调用:

但是对于含有缺失值的数组,它们返回的结果也是缺失值,如果需要略过缺失值,必须使用 nan* 类型的函数,上述的几个统计函数都有对应的 nan* 函数。对于协方差和相关系数分别可以利用 cov, corrcoef 如下计算:最后,需要说明二维 Numpy 数组中统计函数的 axis 参数,它能够进行某一个维度下的统计特征计算,

当 axis=0 时结果为列的统计指标,当 axis=1 时结果为行的统计指标:

5. 广播机制

广播机制用于处理两个不同维度数组之间的操作,这里只讨论不超过两维的数组广播机制

5.1 标量和数组的操作

当一个标量和数组进行运算时,标量会自动把大小扩充为数组大小,之后进行逐元素操作:

5.2 二维数组之间的操作

1) 两个数组维度完全一致

2) 两个数组维度不一致,且其中有一个数组为mx1 或者1xn,则会将具有1 的维度扩充为另一个数组对应的维度

5.3 一维数组和二维数组之间的操作

6. 向量和矩阵

6.1 dot()运算

1) 单个数dot运算

2)两个一维数组dot运算

3)两个二维数组dot运算

6.2 @ 矩阵乘法

6.3 向量范数和矩阵范数 np.linalg.norm

# 向量范数:向量大小的度量方式,有L0,L1,L2等不同的计算方式,常用L2范数向量的1-范数:各个元素的绝对值之和

向量的2-范数:每个元素的平方和再开平方根

向量的无穷范数:正无穷范数表示向量的所有元素的绝对值中最大值,负无穷范数表示向量的所有元素的绝对值中最小

p-范数:向量元素绝对值的p次方和的1/p次幂

# 矩阵范数:对向量范数进行推广,就获得了矩阵范数,因此矩阵范数也是对矩阵的一种度量方式矩阵的1-范数(列模):矩阵的每一列上的元素绝对值先求和,再从中取个最大的

矩阵的2-范数(谱模):矩阵和其转置矩阵相乘的最大特征值开平方根

矩阵的无穷范数(行模):矩阵的每一行上的元素绝对值先求和,再从中取个最大的

F-范数:Frobenius范数,即矩阵元素绝对值的平方和再开平方

python用np.linalg.norm实现范数求解

np.linalg.norm(x, ord=None, axis=None, keepdims=False)-x: 表示矩阵(也可以是一维)

-ord:范数类型(默认ord=2 l2范数; ord=1 l1范数; ord=np.inf 无穷范数)

向量的范数求解

矩阵的范数求解

三、练习

Ex1:利用列表推导式写矩阵乘法

numpy.empty(shape, dtype=float, order=‘C’)根据给定的维度和数值类型返回一个新的数组,其元素不进行初始化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值