python中的np.exp_numpy.exp,numpy.sqrt,np.power等函数的详细理解

草鸡详细的np.exp(),np.sqrt(),等运算的理解过程。 一个程序猿世界的小白的自我成长之路 ^_&

np.exp(x)表示自然数e(2.718281828459045)的多少次方,括号里给数字1,就表示e的1次方,给2表示e的2次方,括号里的数可以是负数或分数。

np.sqrt(x)表示开平方,括号给1,表示给1开平方,给2表示2开平方,括号里的数必须大于或等于0。

np.power(x, y) 表示x 的y次方,y=2表示x的平方,y=1/2表示x开方,y =1/3表示x开立方,y= -1表示x的倒数。

结合下面代码理解更容易哦!

""

# 理解np.exp(),np.aqrt(),np.power()等运算

# 作者:wuming

# 邮箱:2917807282@qq.com

# 时间:2020.7.29

""

import numpy as np

arr = np.arange(5)        # 创建一个arr = [0, 1, 2, 3, 4]的列表

print(arr)                # 显示列表arr[0]= 0, arr[1]=1, arr[2]=2, arr[3]=3, arr[4]=4

for i in range(5):

x = np.exp(arr[i])

print('e的{}次方={}'.format(i, x))    # np.exp()的作用表示e的arr[i]次方

for i in range(5):

y = np.sqrt(arr[i])

print('{}的平方根是{}'.format(arr[i], y))  # np.sqrt()表示arr[j]开方

for i in range(5):

z = np.power(arr[i])           # np.power(x, y)表示x的y次方,y=2表示平方,y=0.5表示开平方

print('{}的平方 = {}'.format(arr[i], z))

显示结果如下:

D:\anaconda\python.exe "D:/my test project/exp_sqrt/exp_sqrt.py"

[0 1 2 3 4]

e的0次方=1.0

e的1次方=2.718281828459045

e的2次方=7.38905609893065

e的3次方=20.085536923187668

e的4次方=54.598150033144236

0的平方根是0.0

1的平方根是1.0

2的平方根是1.4142135623730951

3的平方根是1.7320508075688772

4的平方根是2.0

0的平方 = 0

1的平方 = 1

2的平方 = 4

3的平方 = 9

4的平方 = 16

等等等,等一夏,客官,别走。还没有完呢,翠花先给客官上两盘酸菜,秋香给客官上一碟花生米,请客官慢慢品,嘿嘿。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码实现了一个高斯混合模型(Gaussian Mixture Model, GMM)的 EM 算法,用来对给定的数据进行聚类。下面是每一行代码的详细解释: ```python import pandas as pd import numpy as np import matplotlib.pyplot as plt import math ``` 导入所需要的库。 ```python data = np.load('dataset_em.npy') ``` 从文件加载数据。 ```python mu0 = np.array([np.mean(data) - 1, np.mean(data) + 1]) sg0 = np.array([1.0, 1.0]) w0 = [0.5, 0.5] ``` 初始化高斯混合模型的均值(mu)、标准差(sg)和权重(w)。 ```python ary_mu = [mu0] ary_sg = [sg0] ary_w = [w0] ``` 将初始值存储在数组,以便后续的 EM 算法迭代更新。 ```python x = np.arange(-10, 15, 0.1) ``` 生成 X 轴的数据,用于画图。 ```python def pdf_gauss(x, mu, sg): c = 1 / np.sqrt(2 * np.pi) p = c / sg * np.exp(-0.5 * ((x - mu) / sg) ** 2) return p ``` 定义高斯分布的概率密度函数。 ```python def gauss_mix_pdf(w, x, mu, sg): p = w[0] * pdf_gauss(x, mu[0], sg[0]) + w[1] * pdf_gauss(x, mu[1], sg[1]) return p ``` 定义高斯混合分布的概率密度函数,其 w 为权重,x、mu、sg 分别为 X 轴、均值和标准差。 ```python for j in range(0, 100): mu = ary_mu[j] sg = ary_sg[j] w = ary_w[j] gama = [] for i in (0, 1): b = w[i] * pdf_gauss(data, mu[i], sg[i]) c = gauss_mix_pdf(w, data, mu, sg) gama.append(b / c) gama_sum0 = np.sum(gama[0]) gama_sum1 = np.sum(gama[1]) new_mu = [np.sum(data * gama[0]) / gama_sum0, np.sum(data * gama[1]) / gama_sum1] new_sg = [np.sqrt(np.sum(gama[0] * np.power(data - new_mu[0], 2)) / gama_sum0), np.sqrt(np.sum(gama[1] * np.power(data - new_mu[1], 2)) / gama_sum1)] new_w = [gama_sum0 / data.shape[0], gama_sum1 / data.shape[0]] ary_mu.extend([new_mu]) ary_sg.extend([new_sg]) ary_w.extend([new_w]) del gama ``` 进行 EM 算法的迭代更新,其 j 为迭代次数,data 为输入数据,mu、sg、w 分别为均值、标准差和权重。gama 为 E 步计算的后验概率,new_mu、new_sg、new_w 分别为 M 步更新后的均值、标准差和权重。最后将更新后的均值、标准差和权重存储在数组。 ```python y = gauss_mix_pdf(ary_w[100], x, ary_mu[100], ary_sg[100]) plt.figure() plt.hist(data, bins=100, facecolor="blue", edgecolor="black", alpha=0.7, density=True) plt.plot(x, y) plt.show() ``` 画出最终的 GMM 模型和数据的分布直方图。其 y 为高斯混合分布的概率密度函数,ary_w[100]、ary_mu[100]、ary_sg[100] 分别为最终的权重、均值和标准差。plt.hist() 画出数据的分布直方图,plt.plot() 画出 GMM 模型的曲线。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值