python Numpy库
# 介绍
- short for numeric Python
- 可以用来:
- 高维数组(矩阵), 矩阵计算
- 快速傅立叶变换
# 使用基础
# import
|
|
# 创建 narray
|
|
用shape创建的方法:
-
shape是一个tuple(i, j), i行j列
-
np.zeros(shape) np.ones(shape) 创建全0/1的narray
-
np.empty(shape) 创建未初始化的
-
np.eye(n) = np.identity(n)
-
np.ones_like(list) 创建和另一个 narray shape 相同的全1 narray. 同理还有 zeors_like()等
|
|
# 属性/特性
# 切片
- 可以切片读值, 甚至可以切片赋值
- 索引批量赋值, 赋一行或一列
- 还能用比较复杂一点的索引实现类似框选的效果, 选中区域赋值
# fancy indexing
|
|
和切片不同, 用 fancy index赋值总是会复制一份数据
# dtype
指数组中的数据类型
- 有int/uint8~64, float16~128, complex64~256, bool, object, string_, unicode_
|
|
# 运算符
|
|
|
|
两个同shape的 narray 可以直接比较, 返回一个同 shape 的 bool 类型 narray
|
|
# copy问题
|
|
# 函数
# 矩阵相关运算
# 直接相加
|
|
# 矩阵乘法
|
|
# 实用数学运算
unary
- np.abs(arr), sqrt, exp, sign, log, log10, log2, ceil, floor, mean
- log1p 即 log(1+x_)
- np.maximun(x, y) 在两个narray里取每个位置的最大值
- arr * n, 直接将矩阵的所有数值乘n
- remainder, whole_part = np.modf(arr) 商和余数
binary
- np.add(arr1, arr2), substract, multiply, divide, floor_divide, power, maximun, minimun, mod, logical_and
- fmax, fmin 无视 NaN
# 转置
|
|
# random
np.random 下的函数
standard_normal() 和各种 distribution
|
|
permutation()
|
|
# where
x if c else y, 三个参数都是 同 shape 的 narray
|
|
# sort
arr.sort()
arr.sort(axis=0)
0是行, 1是列
# 统计方法
- arr.mean(), sum, std
np.unique(list) = sorted(set(list))
np.in1d(arr1d, list) 即 in
|
|
# LinAlg
x.dot(y) = np.dot(x, y)
逆矩阵 np.linalg.inv(arr)