ToB企服应用市场:ToB评测及商务社交产业平台

标题: 在科学盘算范畴独领风骚,NumPy书写辉煌传奇 [打印本页]

作者: tsx81429    时间: 2024-5-15 05:45
标题: 在科学盘算范畴独领风骚,NumPy书写辉煌传奇
在数字世界的边缘,有一座神奇的城市,这座城市由无数个数据点和向量构成,街道上流淌着数不清的数组和矩阵。在城市的中心,耸立着一座巨大的科学盘算塔,它的外墙是由数学符号和代码构成,散发着闪烁的数字光芒。城里的居民们穿梭于数组的巷道间,驾驭着向量的飞船,探索着数据的深海,寻找着数学的奥秘。这里,每一个函数、每一个对象,都是城市的一部分,编织成了一张无比巨大的数学网络。
这里不仅是科学盘算的殿堂,更是数学与编程的交汇之地,这个就是本日的主角NumPy。

NumPy是什么

NumPy是Numerical Python的缩写,有人读作兰派,也有人读作兰皮,他是Python中一个重要的科学盘算库,是一个非常盛行的Python第三方库,关于Python第三方库,可以看这里,《Python第三库介绍》。
NumPy就是用来科学盘算的,不要听科学两个字给吓到了,现实上也没有太高深,主要是用于处理惩罚和操纵大型多维数组以及进行数值盘算。它提供了高效的数组对象和各种操纵数组的函数,是许多其他科学盘算库和数据分析库的基础。
NumPy的焦点是多维数组对象(称为ndarray),它可以容纳各种数据类型(如整数、浮点数、布尔值等)的元素,而且可以通过整数索引快速访问和操纵数组中的数据。NumPy提供了许多用于创建、操纵和处理惩罚数组的函数和方法,如矩阵运算、数学函数、逻辑运算、排序和统计分析等。
安装NumPy

当你开始使用NumPy时,首先需要安装NumPy库。可以使用以下命令通过pip安装NumPy:
  1. pip install numpy
复制代码
安装完成后,就可以在你的Python代码中导入NumPy库并开始使用。
使用NumPy

安装完成后,在 Python 脚本中引入 NumPy 模块,这里需要注意的是,我们平时正式中把NumPy写成大小写的情势,但是在使用的时候都是要小写的,否则会提示找不到相应的模块。
  1. import numpy
复制代码
不可以如许
  1. import NumPy
复制代码
用NumPy进行数组操纵

下面是一个使用NumPy的简单示例,以创建一个一维数组并进行一些常见的操纵为例:
  1. import numpy as np
  2. # 创建一维数组
  3. arr = np.array([1, 2, 3, 4, 5])
  4. print(arr)  # 输出:[1 2 3 4 5]
  5. # 访问数组元素
  6. print(arr[0])  # 输出:1
  7. print(arr[2:4])  # 输出:[3 4]
  8. # 数组运算
  9. print(arr + 2)  # 输出:[3 4 5 6 7]
  10. print(arr * 2)  # 输出:[ 2  4  6  8 10]
  11. print(np.sqrt(arr))  # 输出:[1.         1.41421356 1.73205081 2.         2.23606798]
  12. # 数组形状修改
  13. arr_reshape = arr.reshape((5, 1))
  14. print(arr_reshape)
  15. # 输出:
  16. # [[1]
  17. #  [2]
  18. #  [3]
  19. #  [4]
  20. #  [5]]
  21. # 数组统计
  22. print(np.mean(arr))  # 输出:3.0
  23. print(np.max(arr))  # 输出:5
  24. print(np.sum(arr))  # 输出:15
  25. # 数组操作
  26. arr2 = np.array([6, 7, 8, 9, 10])
  27. print(np.concatenate((arr, arr2)))  # 输出:[ 1  2  3  4  5  6  7  8  9 10]
复制代码
以上是一些使用NumPy的基本操纵示例,通过NumPy提供的各种函数和方法,你可以进行更复的数组操纵、数值运算、统计分析等,这个主要就是NumPy的一些比较小的功能,Numpy的强大功能肯定不止于此。
用Numpy解方程

假设有如下线性方程组:
  1. 2x + y = 5
  2. x - 3y = -1
复制代码
我们可以将系数矩阵和常数项向量表示成NumPy数组,然后使用numpy.linalg.solve()函数求解方程组。
  1. import numpy as np
  2. # 定义系数矩阵,就是方程组左边x,y前面的系数
  3. a = np.array([[2, 1], [1, -3]])
  4. # 定义常数项向量,就是方程组右边的数值
  5. b = np.array([5, -1])
  6. # 求解方程组
  7. x = np.linalg.solve(a, b)
  8. print("方程组的解为:", x)
复制代码
运行结果后输出:
  1. 方程组的解为: [[2.]
  2. [1.]]
复制代码
说明方程组的解就是x=2, y=1,如许就很好的求出了二元一次方程组的答案,这就是把数学问题用代码的情势表现出来。当然,Numpy肯定也是可以处理惩罚更加复杂的方程组盘算,大家可以去相识相关的文档。
NumPy在机器学习中的应用

在机器学习范畴中,NumPy经常用于数据的预处理惩罚和特性工程阶段。
在许多机器学习算法中,特性缩放是一个重要的步骤,目的是将数据特性进行归一化处理惩罚,使得差别特性之间具有相似的数值范围,从而进步算法的性能和收敛速率。
假设我们有一个数据集,其中包含两个特性:年事和收入。年事的取值范围是0到100,收入的取值范围是1000到100000。我们希望将这两个特性进行缩放,使得它们的取值范围都在0到1之间。
  1. import numpy as np
  2. # 原始数据
  3. age = np.array([20, 40, 60, 80])
  4. income = np.array([1000, 5000, 20000, 80000])
  5. # 特征缩放
  6. age_scaled = (age - np.min(age)) / (np.max(age) - np.min(age))
  7. income_scaled = (income - np.min(income)) / (np.max(income) - np.min(income))
  8. # 打印缩放后的结果
  9. print("缩放后的年龄:", age_scaled)
  10. print("缩放后的收入:", income_scaled)
复制代码
运行上述代码,将得到以下输出结果:
  1. 缩放后的年龄: [0.         0.33333333 0.66666667 1.        ]
  2. 缩放后的收入: [0.         0.05063291 0.24050633 1.        ]
复制代码
可以看到,经过特性缩放后,年事的取值范围变为0到1之间,收入也变为0到1之间,使得数据在同一数值范围内,方便后续的机器学习算法处理惩罚。当然关于机器学习,更专业的库的是Tesnsorflow,只是底层都是基于NumPy构建的。
NumPy在物理建模中的应用

偶然候,在现实世界中的一些物理规律,我们需要通过有规则的线条来表示出来,那么就也需要用到NumPy这个库了,好比我们需要知道摆锤的运动过程,随时间变革的过程中摆角一些变革规律。
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. # 定义常数
  4. g = 9.81  # 重力加速度 m/s^2
  5. L = 1.0   # 摆长 m
  6. dt = 0.01 # 时间步长 s
  7. T = 10    # 总时间 s
  8. # 初始化数组
  9. N = int(T/dt)
  10. theta = np.zeros(N)
  11. omega = np.zeros(N)
  12. # 设置初始条件
  13. theta[0] = np.pi/4  # 初始偏转角度 45度
  14. omega[0] = 0        # 初始角速度
  15. # 数值求解
  16. for i in range(N-1):
  17.     omega[i+1] = omega[i] - (g/L) * np.sin(theta[i]) * dt
  18.     theta[i+1] = theta[i] + omega[i+1] * dt
  19. # 绘制摆锤运动角度随时间变化图
  20. t = np.arange(0, T, dt)
  21. plt.plot(t, theta)
  22. plt.xlabel('Time (s)') #时间
  23. plt.ylabel('Pendulum angle (in radians)') #摆角 (弧度)
  24. plt.title('Pendulum motion simulation') #摆锤运动模拟
  25. plt.grid()
  26. plt.show()
复制代码
以上这段代码是一个简单的模仿摆锤(简谐摆)运动的过程,通过数值求解来模仿摆锤在重力场中的运动。这里NumPy的主要作用就是初始化了两个数组theta 和omega,分别用于存储摆锤的角度和角速率。当然需要用到matplotlib这个第三库,来输出摆锤的运动轨迹。以下是这个程序的输出:

NumPy社区

目前NumPy是托管在github上面的,从github上面的star数目可以看出,这个库照旧非常受接待的。目前主要Python和C/C++来开发的,开发者假如对这个第三库有爱好,可以自行提交相关的补丁。

官方社区:https://numpy.org/
源码地址:https://github.com/numpy/numpy
中文社区:https://www.numpy.org.cn/
更多精彩内容,请关注同名公众:一点sir(alittle-sir)


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4