Python——Numpy计算
数据计算
Numpy对于相同维度的数组可以直接运算。对于不同shape大小的数据,利用广播机制(Broadcast)进行操作。但是要求最后一个维度的大小为1,这样才能对数据进行加减可以使用进行数据计
广播的规则:
- 让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐。
- 输出数组的形状是输入数组形状的各个维度上的最大值。
- 如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为 1 时,这个数组能够用来计算,否则出错。
- 当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。
数学函数
三角函数:sin() cos() tan() arcsin() arccos() arctan()等
角度与弧度的转化主要利用的是 np.degrees() 和np.radians()
线性代数
linalg是关于线性代数的函数库。
函数 | 描述 |
---|---|
numpy.dot(a, b, out=None) |
两个数组的点积,即元素对应相乘。 |
numpy.vdot() |
两个向量的点积 |
numpy.inner() |
两个数组的内积 |
numpy.matmul() |
两个数组的矩阵积 |
numpy.linalg.det() |
矩阵的行列式 |
numpy.linalg.solve() |
求解线性矩阵方程 |
numpy.linalg.inv() |
计算矩阵的乘法逆矩阵 |
舍入函数
numpy.around(a,decimals)
返回指定数字的四舍五入值
decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置numpy.floor()
向下取整numpy.ceil()
向上取整numpy.trunc()
返回数据最接近的整数
算术函数
-
numpy.add(),numpy.subtract(),numpy.multiply() 和 numpy.divide()
数组的加减乘除 -
numpy.reciprocal()
返回参数逐元素的倒数 -
numpy.power()
将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。 -
numpy.mod()
计算输入数组中相应元素的相除后的余数 -
numpy.ufunc.outer
他的原理是针对两个数组或者矩阵的每个元素做运算。
r = empty(len(A), len(B)) for i in range(len(A)): for j in range(len(B)): r[i,j]=op(A[i], B[j]) //op指的是ufunc的操作是什么可能是加 减 乘 除
统计函数
-
numpy.amin() 和 numpy.amax()
计算数组中的元素沿指定轴的最小值或最大值。 -
numpy.ptp()
计算数组中元素最大值与最小值的差 -
numpy.percentile(a, q, axis)
百分位数是统计中使用的度量,表示小于这个值的观察值的百分比a: 输入数组; q: 要计算的百分位数,在 0 ~ 100 之间; axis: 沿着它计算百分位数的轴
-
numpy.median()
中位数 -
numpy.mean()
平均值 -
numpy.average()
平均值 更多的用于计算加权平均值 -
numpy.std()
标准差 -
numpy.var()
方差
排序函数与条件函数
种类 | 速度 | 最坏情况 | 工作空间 | 稳定性 |
---|---|---|---|---|
'quicksort' (快速排序) |
1 | O(n^2) |
0 | 否 |
'mergesort' (归并排序) |
2 | O(n*log(n)) |
~n/2 | 是 |
'heapsort' (堆排序) |
3 | O(n*log(n)) |
0 | 否 |
-
numpy.sort(a, axis, kind, order)
a: 要排序的数组; axis: 沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序, axis=0 按列排序,axis=1 按行排序; kind: 默认为'quicksort'(快速排序) order: 如果数组包含字段,则是要排序的字段
-
numpy.argsort()
返回的是数组值从小到大的索引值 -
numpy.argmax() 和 numpy.argmin()
函数分别沿给定轴返回最大和最小元素的索引 -
numpy.argpartition(a, kth, axis=- 1, kind='introselect', order=None)
可以找出 k 个最大数值的索引 -
numpy.nonzero()
函数返回输入数组中非零元素的索引 -
numpy.where(condition, ture, false)
函数返回输入数组中满足给定条件的元素的索引 -
numpy.extract(condition, array)
函数根据某个条件从数组中抽取元素,返回满条件的元素。 -
numpy.allclose()
匹配两个数组,检查两个数组是否相似,并得到布尔值表示的输出
保存
numpy.save(file, arr, allow_pickle=True, fix_imports=True)
将数组保存到以 .npy 为扩展名的文件中。
- file:要保存的文件,扩展名为 .npy,如果文件路径末尾没有扩展名 .npy,该扩展名会被自动加上。
- arr: 要保存的数组
- allow_pickle: 可选,布尔值,允许使用 Python pickles 保存对象数组,Python 中的 pickle 用于在保存到磁盘文件或从磁盘文件读取之前,对对象进行序列化和反序列化。
- fix_imports: 可选,为了方便 Pyhton2 中读取 Python3 保存的数据。
输出格式设置
np.set_printopoints()可以控制输出格式 这些选项确定浮点数、数组和其他 NumPy 对象的显示方式。
precision:int or None浮点输出的精度位数(默认8)# 如floatmode不是fixed,可能是None
threshold:int触发汇总的数组元素总数而不是完整的repr(默认1000)
edgeitems:int在开头和结尾的摘要中的数组项数 每个维度(默认为3)
linewidth:int每行用于插入的字符数# 换行符(默认为75)
suppress : bool,科学记数法启用
True用固定点打印浮点数符号,当前精度中的数字等于零将打印为零。
False用科学记数法;最小数绝对值是<1e-4或比率最大绝对值> 1e3。默认值False
nanstr:str浮点非字母数字的字符串表示形式(默认为nan)
infstr:str浮点无穷大字符串表示形式(默认inf)
sign:string,' - ','+'或'',控制浮点类型符号的打印。
'+'打印正值标志。''打印空格。' - '省略正值符号,默认
formatter:可调用字典,格式化功能
格式化设置类型:
- 'bool'
- 'int'
- 'timedelta':'numpy.timedelta64'
- 'datetime':numpy.datetime64
- 'float'
- 'longfloat':128位浮点数
- 'complexfloat'
- 'longcomplexfloat':由两个128位浮点组成
- 'numpystr' : types numpy.string_ and numpy.unicode
- 'object' : np.object arrays
- 'str':所有其他字符串
#用于一次设置一组类型的其他键:
- 'all':设置所有类型
- 'int_kind':设置'int'
- 'float_kind':设置'float'和'longfloat'
- 'complex_kind':设置'complexfloat'和'longcomplexfloat'
- 'str_kind':设置'str'和'numpystr'
floatmode:str控制precision选项的解释
浮点类型值:
-'fixed':始终打印精确的'precision精度'小数位
-'unique':打印最小小数位数,precision选项被忽略。
-'maxprec':打印最多precision小数位数
-'maxprec_equal':最多打印precision小数位数
legacy:string或False
如为字符串“1.13”,则启用1.13传统打印模式。
如设置“False”,禁用传统模式。无法识别的字符串将被忽略
tips:
np.sum和np.add.reduce有什么区别?两者的性能似乎是完全不同的:对于相对较小的数组大小而言。add.reduce
大约快两倍。对于较大的数组大小,差别似乎消失了。较长的答案: np.sum
在中定义numpy/core/fromnumeric.py。在定义中np.sum
,你会看到工作被传递给_methods._sum
。该功能是_methods.py简单地说就是:
def _sum(a, axis=None, dtype=None, out=None, keepdims=False):
return um.add.reduce(a, axis=axis, dtype=dtype,
out=out, keepdims=keepdims)
怎么对矩阵上三角或者下三角处理数据?
numpy.tile(array , size) 拼接数组 自身多个
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本