学习目标:
学习内容:
提示:这里可以添加要学的内容
例如:
1、 python基础
2、 pandas基础
遗漏的python知识
- map函数:它返回的是一个 map 对象,需要通过 list 转为列表:
map(function, iterable, ...)
list(map(lambda x: 2*x, range(5)))#e.g.
numpy总结
引用模 块 | 函数/属性名 | 实例 | 说明 |
---|---|---|---|
import numpy as np | |||
1)基本属性 | |||
array.ndim | 数组维度 | ||
array.size | 数组元素个数 | ||
array.dtype | 数组数据类型 | ||
2) 基本函数 | |||
np.set_printoptions() | np.set_printoptions(precision=4, suppress=True) | 设置输出精度,是否使用科学计算 | |
np.array() | np.array([[1,2,3,4],[0,1,2,3]] ) | 创建 ndarray对象 | |
np.arange() | np.arange(15) np.arrange(-3,3,0.2) #0.2为步长 | 创建一个等差数组 | |
np.zeros() | np.zeros(10) np.zeros( (3,6) ) | 生成一个给定大小的全0数组 | |
np.ones() | np.ones( (2,3,2) ) | 生成一个给定大小的全1数组 | |
np.reshape() | np.arange(15).reshape(3, 5) | 将一维数组转换为指定的多维数组 | |
3) 通用数学函数 | |||
np.abs()、np.fabs() | np.abs(x),np.fabs(x) | 计算整数、浮点数或复数的绝对值 | |
np.sqrt() | np.sqrt(arr) | 计算各元素的平方根 | |
np.square() | np.square(x) | 计算各元素的平方 | |
np.exp() | np.exp(arr) | 计算各元素的指数 | |
np.sin()、np.cos()、np.cosh()、np.sin() np.sinh()、np.tan()、np.tanh() | np.sin(arr) | 普通和双曲型三角函数 | |
np.floor() | np.floor(arr/10) #将arr转换成整数形式的十分制分数 | 计算各元素的floor值,即小于等于该值的最大整数 | |
np.ceil() | 计算各元素的ceiling值,即大于等于该值的最小整数 | ||
3) 二元函数 | |||
np.add() | 将数据中对应的元素相加 | ||
np.subtract() | 从第一个数组中减去第二个数组中的元素 | ||
np.multiply() | 数组元素相乘 | ||
np.divide() | 除法或向下取整除法 | ||
np.power() | 对第一个数组中的元素A,根据第二个数组中的相应元素B,计算AB | ||
np.mod() | 元素级的求模运算 | ||
np.copysign() | 将第二个数组中的值的符号复制给第一个数组中的值 | ||
np.equal(),np.not_equal() | 执行元素级的比较运算,产生布尔型数组 | ||
4) 聚集函数 | |||
array.sum() | arr.sum() #全部求和 arr.sum(1) #按给定轴求和,产生低一维的数组 | 求和函数 | |
array.mean() | arr.mean() | 算术平均值 | |
array.min()、array.max() | arr.max()、arr.min() | 最大值和最小值 | |
array.argmin()、array.argmax() | arr.argmax()、arr.argmin() | 最大值和最小值的索引 | |
array.cumsum() | arr.cumsum(axis = 1) #逐列求累加和 | 从0开始向前累加各元素 | |
array.cumprod() | arr.cumprod() | 从1开始向前累乘各元素 | |
5) 随机生成函数 | |||
np.random.random() | 随机产生[0,1)之间的浮点值 | ||
np.random.randint() | np.random.randint(0, 2, size = (2,10)) #生成0-1之间的整数随机数,维度是2*10 | 随机生成给定范围内的一组整数 | |
np.random.uniform() | 随机生成给定范围内服从均匀分布的一组浮点数 | ||
np.random.choice() | 在给定的序列内随机选择元素 | ||
np.random.normal() | np.random.normal( 1, 2.1, size(4,4) ) #生成4*4的矩阵,均值为1,方差为2.1 | 随机生成一组服从给定均值和方差的正态分布随机数 | |
6) 条件逻辑的数组运算 | |||
np.where() | result = np.where(cond, xarr, yarr) np.where( arr>0, 2, -2) #将arr数组中>0的替换为2,其余替换为-2 np.where( arr>0, 2, arr) #将arr数组中>0的替换为2,其余不变 | 三元表达式:x if condition else y的矢量化版本 |
练习题自己的想法
#作业
M1 = np.random.rand(2,3)
M2 = np.random.rand(3,4)
res = np.empty((M1.shape[0],M2.shape[1]))
for i in range(M1.shape[0]):
for j in range(M2.shape[1]):
item = 0
for k in range(M1.shape[1]):
item += M1[i][k] * M2[k][j]
res[i][j] = item
(abs(M1@M2 - res) < 1e-15).all() # 排除数值误差
#------------------------------------------------------------#
#rewrite
result = np.array([[np.sum(row*col) for col in Mat2.T ] for row in Mat1 ])
- 设矩阵 Am×n ,现在对 A 中的每一个元素进行更新生成矩阵 B ,更新方法是 Bij=Aij∑k=1n1Aik
A= np.mat('1 2 3;4 5 6;7 8 9')
B = [ [A[r][c] * np.sum(1/A[r,:]) for c in range(A.shape[1])] for r in range(A.shape[0]) ]
- Chi-SquareStatistic
np.random.seed(0)
A = np.random.randint(10, 20, (8, 5))
B = (A.sum(axis=0)*A.sum(axis=1).reshape(-1,1))/A.sum()
((A-B)**2/B).sum()
np.random.seed(0)
m, n, p = 100, 80, 50
B = np.random.randint(0, 2, (m, p))
U = np.random.randint(0, 2, (p, n))
Z = np.random.randint(0, 2, (m, n))
##就是求一个2-范数emmm
(((B**2).sum(1).reshape(-1,1)+(U**2).sum(0)-2*B@U)*Z).sum()
A = np.array([3,2,1,2,3,4,6])
np.diff(np.nonzero(np.r_[1,np.diff(x)!=1,1])).max()