Python 一些常用函数 使用

1.import numpy as np

1.1 函数np.cumsum(array) : 返回array数组的累计和

    eg: 若   a = np.array([1,2,3,4,5,6,7])

                b = np.cumcsum(a)  :  

                print (b)       # 结果为 :[ 1  3  6 10 15 21 28]

1.2 函数 np.sort()  : 对数组array 排序 会改变array的顺序

      栗子:

a = np.array([1,3,2,4])

a.sort()  #改变a的结果

print (a)  
[1 2 3 4]

 不改变原数组栗子

b = np.sort(a)

print (a)
[1 3 2 4]

print (b)
[1 2 3 4]

1.3 函数np.searchsorted() :寻找某个数应该插在数组的什么位置上,这个数组必须是按序排列的

    栗子:

vs = [1,3,5,7,9]  #vs是排序好了的

np.searchsorted(vs,4)
Out[42]: 2

    如果 vs是乱序的   可以这样使用:

扫描二维码关注公众号,回复: 453284 查看本文章
vs =[5,7,9,1,3]

np.searchsorted(vs,4,sorter=np.argsort(vs))
Out[44]: 2

1.4 random(N) 产生一个数组,数组元素是随机数0~1 

    栗子 :

random(5)
Out[57]: array([0.1517765 , 0.83435134, 0.99721135, 0.4038489 , 0.59011027])

1.5np.linalg.norm(求范数) 

    参考网址 :  https://blog.csdn.net/hqh131360239/article/details/79061535

1.6  enumerate() python 内置函数

    参考网址 :https://blog.csdn.net/churximi/article/details/51648388

栗子:

list1 = ['a','b','c','d','e']
for index, item in enumerate(list1):
    print (index,item)
0 a
1 b
2 c
3 d
4 e
index 对应索引       item 对应元素

1.7 neff() 1.0/(∑ (w*w) )向量w 各元素 平方和 的导数 

    栗子:

    a = [1,2,3,4]   b = neff(a)   print(b)   b = 0.0333333

    

def neff(weights):
    return 1. / np.sum(np.square(weights))

1.8 np.average(): 加权平均 

        栗子 

def estimate(particles, weights):
    """returns mean and variance of the weighted particles"""

    pos = particles[:, 0:2]
    mean = np.average(pos, weights=weights, axis=0)
    var  = np.average((pos - mean)**2, weights=weights, axis=0)
    return mean, var    

1.9 np.empty((N,M)): 产生一个空的N行M列的矩阵 创建新数组、只分配空间

栗子:

 [154]: p = np.empty((7,3))

print (p)
[[6.23042070e-307 3.56043053e-307 1.60219306e-306]
 [7.56571288e-307 1.89146896e-307 1.37961302e-306]
 [1.05699242e-307 8.01097889e-307 1.78020169e-306]
 [7.56601165e-307 1.02359984e-306 1.69118108e-306]
 [2.22522597e-306 1.78021119e-306 2.31421941e-306]
 [1.78018811e-306 1.78021527e-306 1.11260687e-306]
 [1.33510882e-306 1.42410974e-306 2.56761491e-312]]
2.0   uniform(a,b,size=n) 产生 n个 在(a,b)区间的数据 数据程均匀分布
uniform(2,5,7)
Out[156]: 
array([2.85937243, 4.03099011, 4.9361194 , 4.6128867 , 3.55995196,
       2.69663572, 3.15094972])

    2.1 random(N)默认产生N个(0,1)之间的随机数,   返回数组   random([n,m])默认产生n*m个(0,1)之间的随机数 返回矩阵

    使用random()产生(a,b)之间均匀分布的随机数

     

# rand_num = a + random(n)*(b - a)
p = 2 + random(10)*3

print(p)
[3.68288841 4.38241663 4.22196252 2.8395023  3.72196161 3.09642464
 4.76674124 2.83504302 4.87965372 2.33723848]

实例 产生N个均匀分布的粒子

def create_uniform_particles(x_range, y_range, hdg_range, N):
    particles = np.empty((N, 3))
    particles[:, 0] = uniform(x_range[0], x_range[1], size=N)
    particles[:, 1] = uniform(y_range[0], y_range[1], size=N)
    particles[:, 2] = uniform(hdg_range[0], hdg_range[1], size=N)
    particles[:, 2] %= 2 * np.pi
    return particles
产生 产生N个高斯分布的粒子
 
def create_gaussian_particles(mean, std, N):
    particles = np.empty((N, 3))
    particles[:, 0] = mean[0] + (randn(N) * std[0])
    particles[:, 1] = mean[1] + (randn(N) * std[1])
    particles[:, 2] = mean[2] + (randn(N) * std[2])
    particles[:, 2] %= 2 * np.pi
    return particles

 产生 服从 N~(mu,sigma) 的正态分布 

def Gaussian(self, mu, sigma, x):
        
        # calculates the probability of x for 1-dim Gaussian with mean mu and var. sigma
        return exp(- ((mu - x) ** 2) / (sigma ** 2) / 2.0) / sqrt(2.0 * pi * (sigma ** 2))


    


猜你喜欢

转载自blog.csdn.net/qq_29796781/article/details/80191663