Python 常见数值操作

本文详细介绍使用Python进行基本数值运算、统计运算及复杂运算的方法。包括除法、取整、开平方、计算幂、取绝对值、对数等基本运算,协方差计算等统计运算,以及根据经纬度计算距离和直线夹角的复杂运算。

这是个人整理的一些用python进行数值计算的常用操作。


第一部分 基本数值运算

除法

>>> 1/2
0.5
>>> 2.5/5.0
0.5
>>> 5/7.5
0.6666666666666666

取整

9//30
Out[1]: 0

取余数

9%30
Out[2]: 9

开平方

import math
math.sqrt(36)
Out[3]: 6.0

计算幂

import math
math.pow(6, 2)
Out[4]: 36.0

也可以

>>>a = 2**(-3)
>>>print(a)
0.125

取绝对值

abs()是python3 内置函数

a = -2
b = -3
c = abs(a + b)
print(c)
Out[5]: 5

对数

>>> import math
>>> math.log(2,16)
0.25
>>> math.log(16,2)
4.0
>>> math.log2(16)
4.0
>>> math.log16(2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'math' has no attribute 'log16'
>>>

注:并不是所有的对数都可以写成math.logN(M)的形式,math里面只有log10、log2、log1p、log。log1p是底为e的log函数,同log,计算显示表达式为 f ( x ) = l n ( 1 + x ) f(x)=ln(1+x) f(x)=ln(1+x)。因此math.log(10,math.e)的结果和math.log(11,math.e)的结果相同。

>>> math.log(10,math.e)
2.302585092994046
>>> math.log1p(10)
2.3978952727983707
>>> math.log(11,math.e)
2.3978952727983707

第二部分 统计运算

计算协方差

x = np.array([[0, 2], [1, 1], [2, 0]]).T
print(x)

输出

[[0 1 2]
 [2 1 0]]
cov = np.cov(x)
print(cov)

输出

[[ 1. -1.]
 [-1.  1.]]

注意:如果每行不是代表一个变量,那么了有两种方法。第一种就像上面那样先将矩阵或者数组转置,再求协方差;第二种是用cov函数中的rowvar参数来控制,rowvar默认为True,如果每列代表一个变量的话,可以将其设为False


第三部分 复杂运算

根据两点经纬度计算距离

# transfer the latitude and longitude to distance
def geo_distance(lng1,lat1,lng2,lat2):
    lng1, lat1, lng2, lat2 = map(radians, [lng1, lat1, lng2, lat2])
    dist_lon = lng2-lng1
    dist_lat = lat2-lat1
    a = sin(dist_lat/2)**2 + cos(lat1) * cos(lat2) * sin(dist_lon/2)**2
    dis = 2*asin(sqrt(a))*6371*1000
    return dis

long_dist = geo_distance(122.0, 38.0, 122.6, 38.0)
lati_dist = geo_distance(122.0, 37.2, 122.0, 38.0)
print(long_dist, lati_dist)
# 结果为
52573.587711031105 88955.94131564711

计算两条直线的夹角

参考我的另一篇博文:Python 计算任意两向量之间的夹角

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值