机器学习数学基础 - 求和、乘积、随机数

144 阅读2分钟

机器学习数学基础之求和、乘积、随机数

机器学习数学基础第二篇,了解在pycharm中如何用python搞定求和、乘积和随机数,并且来画个正态分布吧。

求和

使用 numpy 的 sum()函数

import numpy as np

# 定义一个numpy数组
arr = np.array([1, 2, 3, 4, 5])

# 计算arr中所有元素的总和
total = np.sum(arr)

print(total)  # 输出: 15

axis参数

如果你的数组是多维数组,np.sum() 还可以接受一个 axis 参数来指定计算哪个维度的总和。

import numpy as np

# 定义一个二维numpy数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 计算每一列元素的总和
total_col = np.sum(arr, axis=0)

# 计算每一行元素的总和
total_row = np.sum(arr, axis=1)

print(total_col)  # 输出: [5 7 9]
print(total_row)  # 输出: [ 6 15]

乘积

使用 Numpy 的 prod() 函数

import numpy as np

#定义一个numpy数组
arr = np.array([1, 2, 3, 4, 5])

# 计算数组中所有元素的乘积
product = np.prod(arr)

print(product)  # 输出: 120

axis参数

像 np.sum() 一样,如果你的数组是多维的,np.prod() 也可以接受一个 axis 参数来指定计算哪个维度的乘积。

import numpy as np

#定义一个二维numpy数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 计算每一列元素的乘积
product_col = np.prod(arr, axis=0)

# 计算每一行元素的乘积
product_row = np.prod(arr, axis=1)

print(product_col)  # 输出: [ 4 10 18]
print(product_row)  # 输出: [  6 120]

在这个例子中,axis=0 表示计算列的乘积,axis=1 表示计算行的乘积。

随机数

使用 Numpy 的 random() 函数

正态分布

import numpy as np
import matplotlib.pyplot as plt

# 生成 10000 个满足正态分布的随机数
data = np.random.randn(10000)

# 通过直方图观察这些随机数的分布情况
plt.hist(data, bins=30, density=True, alpha=0.5, color='steelblue', edgecolor='none')

# 绘制正态分布的理论曲线
x = np.linspace(min(data), max(data), 10000)
y = (1 / np.sqrt(2 * np.pi)) * np.exp(-x**2 / 2)
plt.plot(x, y, color='red')

plt.show()

randn 函数会生成均值为 0,标准差为 1 的正态分布,然后绘制这些数的直方图。我们还使用了 linspace 创建了一系列等间距的数,并用这些数生成了正态分布的理论曲线。

图像示例

可以看出,生成的随机数的分布情况大致符合理论的正态分布曲线,证明 randn 函数生成的确实是满足正态分布的随机数。

image.png