1. 矩阵的创建
手动创建
A = np.mat('1 2 3 4 5 6')
使用Numpy数组创建
B = np.mat(np.arange(1,10).reshape(3,3))
利用mat(ndArray)函数创建矩阵,矩阵中存放随机数
numpy.random函数函数 说明 seed 确定随机数生成器 permutation 返回一个序列的随机排序或返回一个随机排列的范围 shuffle 对一个序列就地随机排列 rand 产生均匀分布的样本值 randint 从给定的上下限范围内随机选取整数 randn 产生正态分布(平均值为0,标准差为1)的样本值 binomial 产生二项分布的样本值 normal 产生正态分布的样本值 beta 产生beta分布的样本 chisquare 产生卡方分布的样本值 gamma 产生gamma分布的样本值 uniform 产生在[0,1)中均匀分布的样本值 # 产生随机正态分布样本 C=np.mat(np.random.normal(size=(4,4))) print(C) # 产生 2 行三列均匀分布随机数组 D=np.mat(np.random.rand(2,3)) print(D)
利用bmat()函数合并创建矩阵
E = np.bmat('A B;B A')
2. 算术运算
函数 | 说明 |
---|---|
add | 对应元素相加 |
subtract | 对应元素相减 |
multiply | 对应元素相乘 |
divide,floor_divide | 除法或向下取整,对应 / |
true_divide | 返回除法的浮点数,对应// |
2 模运算
- remainder函数:逐个返回两个数组中元素相除后的余数
- mod函数与remainder函数的功能完全一致
- %操作符仅仅是remainder函数的简写
- fmod函数所得余数的正负由被除数决定,与除数的正负无关
3. 通用函数
3.1 一元(unary)ufunc
接受一个数组。返回一个结果数组,当然也有能返回两个数组(modf函数),但是这种的不是很常见;
函数 | 说明 |
---|---|
abs、fabs | 计算整数、浮点数或复数的绝对值 |
sqrt | 计算各元素平方根 |
square | 计算各元素平方 |
exp | 计算各元素的指数 |
log、log10、log2、log1p | 分别为自然对数(底数为e)、底数为10的log、底数为2的log、log(1+x) |
sign | 计算各元素的正负号 |
ceil | 计算各元素的ceiling值,即大于等于该值的最小整数 |
floor | 计算各元素的floor值,即小于等于该值的最大整数 |
rint | 将各元素值四舍五入到最接近的 |
modf | 将数组的小数和整数部分以两个独立的数组形式返回 |
isnan | “哪些值是NaN” 返回布尔值 |
isfinite、isinf | “哪些元素是有穷的” “哪些元素是无穷的” |
cos、cosh、sin、sinh、tan、tanh | 普通型和双曲型三角函数 |
arccos、arccosh、arcsin、arcsinh、arctan、arctanh | 反三角函数 |
logical_not | 计算各元素not x的真值,相当于 |
3.2. 二元(unary)ufunc
它们接受两个数组,并返回一个结果数组。
函数 | 说明 |
---|---|
add | 元素相加 |
subtract | 从第一个数组中减去第二个数组的元算 |
multiply | 元素相乘 |
divide、floor_divide | 除法或向下圆整除法(丢弃余数) |
power | A的b次方 |
maximum、fmax | 元素级的最大值计算。fmax将忽略nan |
minimum、fmin | 元素级的最小值计算。fmin将忽略nan |
mod | 元素级的求模计算(除法) |
copysign | 将第二个数组中的值的符号复制给第一个数组中的 |
greater、greater_equal、less、less_equal、equal、not_equal | 执行元素级的比较运算,产生布尔型数组 |
logical_and、logical_or、logical_xor | 执行元素级的真值逻辑运算。相当于& l |
3.3 numpy已有的通用函数的具备的方法
- accumulate 存储求和运算的中间结果并返回
reduceat 需要输入一个数组以及一个索引值列表作为参数
Outer 返回一个矩阵,将第一个矩阵的第一个元素与第二个 矩阵的每个元素求和返回一个矩阵,再将第一个矩阵的第二个元素与第 二个矩阵的每个元素求和返回一个矩阵
- reduce 等价于对矩阵元素求和
4. 线性代数应用
常用的numpy.linalg函数
函数 | 说明 |
---|---|
diag | 以一维数组的形式返回方针的对角线元素,或将一维数组转换为方阵(非对角线元素为) |
dot | 矩阵乘法 |
trace | 计算对角线元素的和 |
det | 计算矩阵行列式 |
eig | 计算方阵的本征值和本征(特征值和特征向量) |
inv | 计算方阵的逆 |
pinv | 计算矩阵的Moore-Penrose伪逆 |
qr | 计算QR分解 |
svd | 计算奇异值分解(SVD) |
solve | 解线性方程组Ax = b, 其中A为一个方阵 |
lstsq | 计算Ax = b的最小二乘解 |
5. 专用函数
5.1 排序函数
np.sort(a[, axis, kind, order])
a = np.array([[3,1,2],[0,5,4]])
a.sort(anxis=1)#行方向上从小到大排
a.sort(anxis=0)#列方向上从小到大排
np.argsort(a[, axis, kind, order])
np. argsort(a,axis=1) #对每行的数据进行排序返回下标
np. argsort(a,axis=0) #对每列的数据进行排序返回下标
-np.sort(-a,axis=1) #对每行的数据进行降序排序
-np.sort(-a,axis=0) #对每列的数据进行降序排序
5.2 搜索函数
- argmax函数——返回数组中最大值对应的下标
- nanargmax函数——与argmax提供相同的功能,但忽略NaN值
- argmin函数——返回数组中最小值对应的下标
- nanargmin函数——与argmin的功能类似,但忽略NaN值
- argwhere函数——根据条件搜索非零的元素,并分组返回对应的下标
- searchsorted函数——为指定的插入值寻找维持数组排序的索引位置。该函数使用二分搜索算法
5.3 数组元素的抽取
extract函数——根据某个条件从数组中抽取元素
#抽取数组中偶数元素 a = np.arange(7) condition = (a%2) ==0 np.extract(condition,a)
nonzero函数——专门用来抽取非零的数组元素
np.nonzero(a)
5.4 金融函数
fv函数——计算所谓的终值(future value),即基于一些假设给出的某个金融资 产在未来某一时间点的价值。
numpy.fv(rate, nper, pmt, pv[, when='end’]) #参数: rate:每一期的利率(rate of interest)。 nper:期数。 pmt:payment。每期支付金额 pv:present value,现值。 when:{{‘begin’, 1}, {‘end’, 0}}, {string, int}, optional. 每一期的开头还是结尾付
pv函数——计算现值(present value),即金融资产当前的价值。
- NPV>0表示项目实施后,除保证可实现预定的收益率外,尚可获得更高的收益。
- NPV<0表示项目实施后,未能达到预定的收益率水平,而不能确定项目已亏损。
- NPV=0表示项目实施后的投资收益率正好达到预期,而不是投资项目盈亏平衡。
pmt函数——根据本金和利率计算每期需支付的金额。
numpy.pmt(rate, nper, pv[, fv=0, when='end’]) #参数: rate:每一期的利率(rate of interest) nper:期数 pv:present value,现值
nper函数——计算定期付款的期数。
numpy.nper(rate, pmt, pv, fv=0, when='end') ''' 参数: rate:每一期的利率(rate of interest) pmt:每期支付的金额 pv:present value,现值 fv: 终值 '''
rate函数——计算利率(rate of interest)。
numpy.rate(nper, pmt, pv, fv) ''' 参数: nper :需还的期数 pmt:每期支付的金额 pv:present value,现值 fv: 终值 '''