numpy调用: import numpy as np
numpy关键点:
1.1 ndarray(n维数组对象)
两大属性:shape(每一维大小)和dtype(数据类型)
创建ndarray方式:array函数(注是函数,输入应为数组,而不是参数;可指定数据类型)、zeros ((3,4))、ones、empty和arrange(10,30,5)函数,asarray,ones_like,zeros_like,empty_like,eye,identity
- arrange函数:起始值,终值,步长
- linspace函数:起始值,终值,数目(等差数列)
- logspace函数:起始值,终值,数目(等比数列)
数据类型: intfloat complex bool object string_ unidcode_
数据类型转换:astype函数
<span style="font-size:14px;color:#000000;">array2=array1.astype(np.float64)
</span>
数组间的操作:相同大小数组间的算术运算作用在每个元素上。
数组的索引和切片:arr[3:7] 包含3456但不包含7,左闭右开。数组的切片是在原来数组上,切片变数组跟着变。除非有明显的拷贝语句:arr.copy()
布尔索引:arr [ a==b ] (操作符包括== != - & | )
Fancy索引:(拷贝数据,而不像切片) arr[ [ 2,4,5,1 ] ]; 负数表示从尾开始
- arr[ [2,4,5,1] ,[ 3,5,6,1] ]表示四个数对应的是(2,3),(4,5),(5,6),(1,1);arr[ [2,4,5,1] ] [ :,[3,5,6,1] ] 对应的是矩形区域按照fancy索引
- np.ix_函数 arr[np.ix_([2,4,5,1],[3,5,6,1])]
转置数组:
- arr.T
- np.dot: np.dot(arr.T,arr)
- arr.transpose((1,0,2)) 即改变第一维和第二维的顺序。返回视窗,不是拷贝。arr.swapaxes(1,2)
函数 | 描述 |
---|---|
abs, fabs | 计算基于元素的整形,浮点或复数的绝对值。fabs对于没有复数数据的快速版本 |
sqrt | 计算每个元素的平方根。等价于 arr ** 0.5 |
square | 计算每个元素的平方。等价于 arr ** 2 |
exp | 计算每个元素的指数。 |
log, log10, log2, log1p | 自然对数(基于e),基于10的对数,基于2的对数和 log(1+ x) |
sign | 计算每个元素的符号:1(positive),0(zero), -1(negative) |
ceil | 计算每个元素的天花板,即大于或等于每个元素的最小值 |
floor | 计算每个元素的地板,即小于或等于每个元素的最大值 |
rint | 圆整每个元素到最近的整数,保留dtype |
modf | 分别返回分数和整数部分的数组 |
isnan | 返回布尔数组标识哪些元素是 NaN (不是一个数) |
isfinite, isinf | 分别返回布尔数组标识哪些元素是有限的(non-inf, non-NaN)或无限的 |
cos, cosh, sin sinh, tan, tanh | regular 和 hyperbolic 三角函数 |
arccos, arccosh, arcsin, arcsinh, arctan, arctanh | 反三角函数 |
logical_not | 计算基于元素的非x的真值。等价于 -arr |
函数 | 描述 |
---|---|
add | 在数组中添加相应的元素 |
substract | 在第一个数组中减去第二个数组 |
multiply | 对数组元素相乘 |
divide, floor_divide | 除和地板除(去掉余数) |
power | 使用第二个数组作为指数提升第一个数组中的元素 |
maximum, fmax | 基于元素的最大值。 fmax 忽略 NaN |
minimum, fmin | 基于元素的最小值。 fmin 忽略 NaN |
mod | 基于元素的模(取余) |
copysign | 拷贝第二个参数的符号到第一个参数 |
greater, greater_equal, less, less_equal, not_equal | 基于元素的比较,产生布尔数组。等价于中缀操作符 >,>=, <, <=,==, != |
logical_and, logical_or, logical_xor | 计算各个元素逻辑操作的真值。等价于中缀操作符 &,|, ^ |
1.3 数组处理
meshgrid(x,y): 横坐标为x,纵坐标为y,构成坐标图
where: np.where(cond, xarr, yarr) # xarr if cond else yarr
sum mean: 有一个参数为axis
cumsum(dim): 累计和,dim为选择的维度
cumprod(dim): 累计乘
方法 | 描述 |
---|---|
sum | 对数组的所有或一个轴向上的元素求和。零长度的数组的和为灵。 |
mean | 算术平均值。灵长度的数组的均值为NaN。 |
std, var | 标准差和方差,有可选的调整自由度(默认值为n)。 |
min, max | 最大值和最小值 |
argmin, argmax | 索引最小和最大元素。 |
cumsum | 从0元素开始的累计和。 |
cumprod | 从1元素开始的累计乘。 |
布尔操作: any all 返回bool值
sort排序:arr.sort(dim)就地修改,但是顶层的np.sort()为拷贝。
unique: np.unique(arr)取不重复的数组arr元素
1.4 数组文件的输入和输出
np.save('filename',arr)
np.load('filename')
np.savez('filename',a=arr,b=arr-1) #多个数据
rest=np.load('filename')
rest['b']
文本文件:
pandas: read_csv read_table
np.loadtxt np.genfromtxt np.savatxt
1.5 线性代数
numpy.linalg 有一个关于矩阵分解,像转置,行列式等的一个标准集合
from numpy.linalg import inv, qr
x.dot(y) np.dot(x,y) #矩阵相乘
mat.T
inv(mat)
函数 | 描述 |
---|---|
diag | 返回一个方阵的对角线(或非对角线)元素为一个一维数组,或者转换一个一维数组到一个方阵(非对角线元素为零) |
dot | 矩阵乘积 |
trace | 计算对角线上元素的和 |
detaa | 计算矩阵行列式 |
eig | 计算方阵的特征值和特征向量 |
inv | 计算方阵逆矩阵 |
pinv | 计算方阵 Moore-Penrose pseudo-inverse 的逆矩阵 |
qr | 计算 QR 分解 |
svd | 计算奇异值分解(SVD) |
solve | 求解线性系统方程 Ax = b 的x,其中A是一个方阵 |
lstsq | 计算 y = Xb 的最小二乘解 |
参考文献:http://pda.readthedocs.io/en/latest/chp4.html