📜  Matlab用户的NumPy(1)

📅  最后修改于: 2023-12-03 15:02:54.015000             🧑  作者: Mango

NumPy - Matlab用户的NumPy

简介

NumPy是一个开源的Python扩展库,用于数值计算,并且支持大量的科学计算。在NumPy中,数组是被视为数据处理的核心,是Python数值计算的一个核心库。

为什么要使用NumPy

在科学计算中,通常需要处理大量的数据。NumPy提供了高效的处理这些数据的方法。使用NumPy的数组,我们可以进行广播、元素级运算以及更高级别的数学操作,而无需在代码中编写循环。NumPy的另一个好处是它提供了C语言级别的性能,这意味着我们可以在Python中快速高效地处理大量的数据。

NumPy与Matlab的对比

NumPy和Matlab都是用于科学计算的强大工具。它们有很多相似之处,在某些方面也有明显的不同之处。以下是一些NumPy与Matlab的对比:

  • Matlab针对矩阵和数值处理的优化显著。Matlab在数值计算方面的性能非常出色,因为矩阵和数值处理是Matlab的核心作用。然而,NumPy也提供了类似的性能。
  • NumPy更加灵活。NumPy不仅仅是一个数值计算库,更是一个通用的数组处理库。NumPy提供的数组可以是多维的,也可以是任意数据类型的,包括记录数组和复合数组等。
  • NumPy是开源的。与Matlab相比,NumPy是开源的,这意味着它非常适合于在教育、研究和开发领域中使用。
  • Matlab具有更多的工具箱。Matlab带有许多为特定领域设计的工具箱,如信号处理、优化、控制系统等。虽然NumPy也提供了类似的功能,但Matlab在这方面更加丰富。
  • NumPy更具可读性和可移植性。与Matlab相比,NumPy具有更好的可读性和可移植性。Python的语法非常清晰简洁,使得NumPy代码易于阅读并且可以很容易地在不同的系统上运行。
NumPy的基本使用
  • 导入NumPy库
import numpy as np

NumPy库的惯例是将其改名为np,对于代码的可读性非常有帮助。

  • 创建数组
arr1 = np.array([1, 2, 3])
arr2 = np.array([[1, 2, 3], [4, 5, 6]])

在NumPy中,数组是一个ndarray对象。我们可以通过np.array()函数创建一个数组。

  • 数组属性
arr2.shape  # 数组的形状
arr2.ndim   # 数组的维数
arr2.size   # 数组中元素的个数
  • 数组基本操作
arr3 = np.arange(10)          # 创建一个长度为10的一维数组
arr4 = np.linspace(0, 1, 10)  # 创建一个由10个元素组成的一维数组,从0到1等分
arr5 = np.zeros((2, 3))      # 创建一个2行3列的数组,每个元素都是0
arr6 = np.ones((2, 3))       # 创建一个2行3列的数组,每个元素都是1
arr7 = np.eye(3)             # 创建一个3行3列的单位矩阵
arr8 = np.random.rand(2, 3)  # 创建一个2行3列的数组,每个元素都是(0,1)之间的随机数
  • 数组索引和切片
arr9 = np.array([1, 2, 3, 4, 5])
arr9[0]       # 第一个元素
arr9[-1]      # 最后一个元素
arr9[1:3]     # 此范围内的一维数组
arr9[::2]     # 取步长为2的元素
  • 数组基本运算
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

a + b        # 数组相加
a - b        # 数组相减
a * b        # 数组相乘
a / b        # 数组相除
np.dot(a, b) # 内积dot(a,b) = |a||b|cos)
  • 数组广播

广播是NumPy中的一个术语,它是指NumPy在执行元素级运算时自动执行的一种机制。它处理不同形状的数组之间的运算。如果两个数组的维数不同,则NumPy必须将维度低的数组扩展为一个大的数组,以便使它们成为可以计算的向量。广播规则如下:

  1. 如果两个数组的维度不同,则将较小的数组扩展为与较大的数组具有相同数量的维度。
  2. 如果两个数组在任何维度上的大小不相等,那么数组在该维度上的大小为1的数组将被拉伸,以匹配具有该维度上的大数组的大小的数组。
arr10 = np.array([[1, 2, 3], [4, 5, 6]])
arr11 = np.array([1, 2, 3])

arr10 + arr11  # 执行广播操作
总结

在科学计算中,NumPy是一个强大的数值处理库,它提供了高效的数组处理方法。NumPy具有更加灵活和通用的数据处理功能,同时也更加易于阅读和可移植。与Matlab相比,虽然NumPy没有Matlab那么多的工具箱,但NumPy仍然是在教育、研究和开发领域中使用的非常重要的工具。