详细介绍可以看Numpy帮助,也有很多资料,此文仅是一个简述性质的集成文章
1.简介
Numpy是Python的一个扩展包,语法和Matlab有很多相似之处。它支持高维数组和矩阵运算,也提供了许多数组和矩阵运算的函数。另外,它在数组和矩阵运算方面速度很快,效率很高。对数组的运算都可以算在每个元素上。如,A*2(A为3*3的矩阵),结果是A中的9个元素都乘2
1.1 索引与切片
数组索引一般用 [] 来实现,一维arratName[行],二维aName[行,列],三维[页,行,列],可以用冒号:代替某一维度,表示取该维度所有元素。如a[[1,2],[3,4]],a[:,1]为[2,4]
布尔型索引 布尔型数组的长度必须和被索引的轴长度一致
花式索引 利用整数数组进行索引
print a[[4, 3, 0, 6]] # 打印a[4]、a[3]、a[0]和a[6]。
切片如下: a为3*3*3矩阵 b = a[1, :,:]
1.2 复制与镜像
用.copy()方法复制数组,= 直接赋值。赋值只能产生镜像,仅是给变量增加一个名称;复制可以生成另一个变量,两个变量相互独立。
1.3 数组转置和轴对换
转置为 arrayName.T
矩阵相乘 np.dot(array1,array2)
高维轴对换 .transpose 或 .swapaxes
1.4 按条件逻辑逻辑运算
如:a=np.arange(9).reshap(3,3) print(a>5), print(a[a>5])。第一个输出是True和False的矩阵,第二个输出6,7,8,9
因此,可以按条件选择数组元素
np.where的使用 语法:np.where(条件,表达式1,表达式2)条件为真执行表达式1,条件为假执行表达式2.
1.5 排序
.sort() 0为按列排序,1为按行排序
2.常用函数介绍
构造函数 | 说明 |
array | 将输入数据(列表、元组、数组等)转换为ndarray |
arange | 类似于range,返回一个ndarray |
ones | 根据指定大小和dtype创建一个全1数组 |
zeros | 根据指定大小和dtype创建一个全0数组 |
empty | 创建数组,只分配内存空间不填充任何值 |
eye, identity | 创建单位矩阵 |
运算函数(一元) | 说明 |
abs,fabs | 计算绝对值,计算复数的模。对于非复数,用fabs更快 |
sqrt | 开方 |
sqare | 平方 相当于a**2 |
exp | 计算各元素的e^x |
log, log10, log2, log(1+x) | 自然对数,底数为10,底数为2和log(1+x) |
ceil | 向上取整 |
floor | 向下取整 |
sign | 计算各元素的正负号 |
rint | 四舍五入到整数,保留dtype |
modf | 将整数部分和小数部分以两个独立数组返回 |
cos,sin,tan | 三角函数 |
arccos,arcsin,arctan | 反三角 |
运算函数(二元) | 说明 |
add | 将数组中对应的元素相加 |
subtract | 从第一个数组中减去第二个数组中的元素 |
multiply | 元素相乘 |
Divide, floor_divide | 相除,或向下取整除法 |
power | Power(A,B) 计算A^B |
Max fmax | 计算最大值,fmax忽略NaN |
Min fmin | 计算最小值,fmin忽略NaN |
mod | 求模 |
copysign | 将第二数组中的符号复制给第一个数组元素 |
greater,greater_equal less,less_equal,equal, not_equal | 执行元素级的比较,最终产生布尔型数组
|
Logical_and, logical_or Logical_xor | 执行元素级的真值逻辑运算,产生布尔型数组 |
数学和统计方法 | 说明 |
sum | 对数组中全部或某轴向的元素求和,0为按列,1为按行 |
mean | 求平均 |
std, var | 标准差和方差 |
min, max | 最小值和最大值 |
argmin,argmax | 最大值和最小值的索引 |
cumsum | 所有元素累计和 |
cumprod | 所有元素累计积 |
去重、集合运算函数 | 说明 |
unique(x) | 计算X中的唯一元素,并返回有序结果 |
intersect1d(x,y) | 计算x和y中的公共元素,并返回有序结果 |
union1d(x,y) | 计算x和y的并集,返回有序结果 |
in1d(x,y) | 得到一个描述x的元素是否包含于y的布尔型数组 |
setdiff1d(x,y) | 集合的差,即元素在X中且不在Y中 |
setxor1d(x,y) | 集合的异或,即存在一个数组中,另外一个数组中没有 |
常用的np.linalg函数 | 说明 |
diag | 以一位数组的形式返回方阵的对角线 |
dot | 矩阵乘法 |
trace | 计算对角线元素的和 |
det | 计算矩阵行列式 |
eig | 计算方阵的特征值和特征向量 |
inv | 计算方阵的逆 |
pinv | 计算矩阵的Moore-Penrose伪逆 |
qr | 计算QR分解 |
svd | 计算奇异值分解 |
solve | 解线性方程Ax=b,A为一个方阵 |
lstsq | 计算Ax=b的最小二乘解 |
随机数生成 函数 | 说明 |
seed | 确定随机数生成器的种子 |
permutation | 返回一个序列的随机排列 |
shuffle | 对一个序列随机乱序 |
rand | 产生均匀分布的样本值 |
randint | 从给定的上下限范围内随机选取整数 |
randn | 产生正态分布(平均值为0,标准差为1) |
binomial | 产生二项分布的样本值 |
normal | 产生正态(高斯)分布的样本值 |
beta | 产生Beta分布的样本值 |
chisquare | 产生卡方分布的样本值 |
gamma | 产生Gramma分布的样本值 |
uniform | 产生在[0,1]中均匀分布的样本值 |