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是乱序的 可以这样使用:
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))