NumPy最常用数组的数学运算方法

numpy mathematical operation

NumPy 数组的数学运算是 NumPy 中非常重要的一个特性。在 NumPy 中,数组可以进行一系列的数学运算,包括加减乘除、幂次方、三角函数、指数函数等。这些数学运算可以对整个数组进行操作,也可以对数组中的每个元素进行操作。下面就对 NumPy 数组的数学运算进行详细介绍。

NumPy四则运算

NumPy 数组的加减乘除运算与 Python 中的运算是类似的,可以使用 +、-、*、/ 运算符进行运算。需要注意的是,这些运算符作用于数组时,是逐元素进行运算的。下面是一些例子:

import numpy as np

# 加减乘除运算
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b  # [5 7 9]
d = a - b  # [-3 -3 -3]
e = a * b  # [4 10 18]
f = b / a  # [4.  2.5 2. ]

幂次方运算

NumPy 中的幂次方运算使用 ** 运算符,也可以使用 np.power() 函数进行运算。下面是一些例子:

# 幂次方运算
a = np.array([2, 3, 4])
b = a ** 2  # [ 4  9 16]
c = np.power(a, 3)  # [ 8 27 64]

三角函数和指数函数

NumPy 中包括了一系列的三角函数和指数函数,这些函数都可以对数组进行操作。

下面是一些例子:

# 三角函数和指数函数
a = np.array([0, np.pi/2, np.pi])
b = np.sin(a)  # [0.0000000e+00 1.0000000e+00 1.2246468e-16]
c = np.cos(a)  # [ 1.000000e+00  6.123234e-17 -1.000000e+00]
d = np.tan(a)  # [ 0.00000000e+00  1.63312394e+16 -1.22464680e-16]
e = np.exp(a)  # [ 1.          4.48168907 23.14069263]

除此之外,还有以下三角函数:

  • np.arcsin(x):逐元素计算反正弦值。
  • np.arccos(x):逐元素计算反余弦值。
  • np.arctan(x):逐元素计算反正切值。
  • np.sinh(x):逐元素计算双曲正弦值。
  • np.cosh(x):逐元素计算双曲余弦值。
  • np.tanh(x):逐元素计算双曲正切值。
  • np.arcsinh(x):逐元素计算反双曲正弦值。
  • np.arccosh(x):逐元素计算反双曲余弦值。
  • np.arctanh(x):逐元素计算反双曲正切值。

使用代码如下:

import numpy as np

a = np.array([0, np.pi/4, np.pi/2])

print(np.arcsin(a))     # [0.         0.90333911        nan]
print(np.arccos(a))     # [1.57079633 0.66745722        nan]
print(np.arctan(a))     # [0.         0.66577375 1.00388482]
print(np.sinh(a))       #[0.         0.86867096 2.3012989 ]
...

数组逻辑运算

NumPy 中的逻辑运算主要包括以下几种:

  • np.logical_and(x1, x2, ...):逐元素进行逻辑 AND 操作。
  • np.logical_or(x1, x2, ...):逐元素进行逻辑 OR 操作。
  • np.logical_not(x):逐元素进行逻辑 NOT 操作。
  • np.logical_xor(x1, x2, ...):逐元素进行逻辑 XOR 操作。

示例代码:

import numpy as np

a = np.array([True, True, False, False])
b = np.array([True, False, True, False])

print(np.logical_and(a, b))  # [ True False False False]
print(np.logical_or(a, b))   # [ True True  True False]
print(np.logical_not(a))     # [False False  True  True]
print(np.logical_xor(a, b))  # [False  True  True False]

NumPy数组的代数运算

NumPy数组除了常用的数学运算,还支持代数运算,包括向量的点积、叉积、矩阵的乘法、求逆等。下面分别介绍这些运算。

向量的点积(dot product)

向量的点积是指两个向量对应位置的数相乘之后求和的结果。在NumPy中,可以使用numpy.dot()函数计算两个向量的点积。例如:

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.dot(a, b)
print(c) # 32

向量的叉积(cross product)

向量的叉积是指两个向量所在平面的法向量。在NumPy中,可以使用numpy.cross()函数计算两个向量的叉积。注意,这个函数只能计算三维向量的叉积。例如:

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.cross(a, b)
print(c) # [-3  6 -3]

矩阵的乘法(matrix multiplication)

矩阵的乘法是指两个矩阵的乘积。在NumPy中,可以使用numpy.matmul()函数或者@运算符计算两个矩阵的乘积。例如:

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.matmul(a, b)
print(c) # [[19 22]
         #  [43 50]]

矩阵的逆(matrix inverse)

矩阵的逆是指一个矩阵与它的逆矩阵相乘等于单位矩阵。在NumPy中,可以使用numpy.linalg.inv()函数计算矩阵的逆。例如:

import numpy as np

a = np.array([[1, 2], [3, 4]])
a_inv = np.linalg.inv(a)
print(a_inv) # [[-2.   1. ]
             #  [ 1.5 -0.5]]

需要注意的是,只有可逆矩阵才有逆矩阵。如果矩阵不可逆,numpy.linalg.inv()函数会抛出LinAlgError异常。

NumPy数组的统计函数

NumPy提供了很多数组的统计函数,用于计算数组的各种统计信息,比如最大值、最小值、均值、标准差、方差、中位数、百分位数等等。这些函数广泛应用于数据分析、机器学习等领域。

下面介绍一些常用的NumPy数组统计函数:

  1. np.max(): 计算数组的最大值。

  2. np.min(): 计算数组的最小值。

  3. np.mean(): 计算数组的均值。

  4. np.median(): 计算数组的中位数。

  5. np.std(): 计算数组的标准差。

  6. np.var(): 计算数组的方差。

  7. np.percentile(): 计算数组的百分位数。

除了上述函数,NumPy还提供了一些其他的数组统计函数,比如np.sum()用于计算数组元素的总和,np.prod()用于计算数组元素的乘积,np.cumsum()用于计算数组元素的累计和,np.cumprod()用于计算数组元素的累计乘积等等。

这些函数的使用方法类似,都可以传入一个数组作为参数,例如:

import numpy as np

a = np.array([1, 2, 3, 4, 5])
print(np.max(a)) # 输出:5
print(np.mean(a)) # 输出:3.0
print(np.percentile(a, 50)) # 输出:3.0

还可以在函数中指定axis参数,计算数组沿指定轴的统计值,例如:

b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(np.max(b, axis=0)) # 输出:[7 8 9]
print(np.mean(b, axis=1)) # 输出:[2. 5. 8.]

上述代码中,np.max(b, axis=0)计算的是数组b沿着第0个轴的最大值,也就是每一列的最大值,结果是一个长度为3的数组;np.mean(b, axis=1)计算的是数组b沿着第1个轴的均值,也就是每一行的均值,结果是一个长度为3的数组。

此文章发布者为:Python技术站作者[metahuber],转载请注明出处:http://pythonjishu.com/numpy-mathematical-operation/

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年 3月 1日 下午8:23
下一篇 2023年 3月 1日 下午8:51

相关推荐

  • Numpy中的数组和向量有什么区别?

    在数学上,向量是一个具有大小和方向的量,通常用于表示物理量或几何量,例如速度、力、位置等。而数组是一组按顺序排列的值的集合,通常用于存储数值数据,例如矩阵、图像等。 在Numpy中,数组(array)是一种多维的容器,可以容纳不同类型的数据。而向量(vector)则是一种特殊的数组,只能容纳单一类型的数据,通常是数值类型。 具体来说,向量是一个一维数组,通常…

    2023年 2月 27日
    00
  • NumPy最常用的两个数组排序方法

    在NumPy中,有多种排序算法可用于对数组进行排序,包括快速排序、堆排序、归并排序等。 NumPy中的排序函数通常包括以下参数: a: 要排序的数组; axis: 沿着哪个轴进行排序,默认为-1,即沿着最后一个轴排序; kind: 排序算法,可选参数有’quicksort'(快速排序)、’mergesort'(归并排序)、’heapsort'(堆排序),默认…

    2023年 3月 1日
    00
  • 详解 NumPy 从磁盘上保存(save)和加载(load)数组

    在NumPy中,可以使用numpy.save()和numpy.load()方法将数组保存到磁盘中,或从磁盘中加载数组。 接下来将逐一介绍这两个方法。 numpy.save()方法 numpy.save(file, arr, allow_pickle=True, fix_imports=True)方法可以将数组保存到磁盘文件中。它的参数包括: file: 保存…

    Numpy 2023年 3月 4日
    00
  • 详解NumPy中数组的索引和切片(访问元素)

    在 NumPy 中,可以使用索引和切片来访问数组中的元素。两者的区别为: 索引是用于访问单个元素的操作; 切片则是用于访问一组元素的操作。 索引 NumPy 中的索引方式与 Python 中的相似,使用方括号 [] 来访问数组中的元素。数组的索引从 0 开始,使用整数值来进行访问。 例如,我们可以通过以下方式访问一个二维数组中的某个元素: import nu…

    2023年 2月 28日
    00
  • 详解NumPy数组的切片和切块

    NumPy是Python中重要的科学计算库,其中的数组可以看作是多维度的容器,可以方便地进行数据处理和计算。 在NumPy中,我们可以使用切片和切块对数组进行索引和取值,以便更加灵活地对数据进行操作。 接下来,我们将详细介绍NumPy数组的切片和切块的操作。 切片操作 在NumPy中,我们可以使用切片操作从数组中提取部分数据。NumPy数组的切片操作类似于P…

    2023年 2月 28日
    00
  • Numpy数组的优点和应用领域

    众所周知,Numpy是Python科学计算中最广泛使用的一个库,主要用于处理多维数组和矩阵计算。 而Numpy中的数组则是NumPy最重要的数据结构之一,具体来说,它有以下优点: 快速而高效的计算:Numpy数组使用C语言编写,这使得数组中的运算更加快速、高效。在处理大量数据时,Numpy数组比Python原生的列表(list)和元组(tuple)更快,因为…

    2023年 2月 27日
    00
  • NumPy 创建数组最常用的3种方式

    NumPy是一个开源的Python科学计算库,主要用于处理多维数组、矩阵以及其他高维数据。在NumPy中,最核心的数据结构是ndarray,它是一种多维数组,可以存储任意类型的数据。在本篇文章中,我们将详细介绍NumPy数组的创建和操作方法。 Numpy使用array函数直接创建数组 可以使用NumPy中的array函数直接创建一个数组。在调用array函数…

    2023年 2月 27日
    00
  • 详解NumPy位运算常用的6种方法

    NumPy支持位运算,包括按位与、按位或、按位异或、按位取反等。在NumPy中,位运算符逐位操作数组元素。 NumPy位运算的6个方法 下面介绍NumPy常用的位运算函数: bitwise_and():按位与运算 bitwise_or():按位或运算 bitwise_xor():按位异或运算 bitwise_not():按位取反运算 left_shift()…

    Numpy 2023年 3月 3日
    00
  • NumPy最常用的8个字符串处理函数

    NumPy 提供了许多字符串处理函数,它们被定义在用于处理字符串数组的 numpy.char 这个类中,这些函数的操作对象是 string 或者 unicode 字符串数组。 下面是最常用的8个字符串处理函数: np.char.add():将两个字符串连接起来 import numpy as np str1 = np.array(['hello&#…

    2023年 3月 3日
    00
  • 详解NumPy常用的数组的扩展和压缩方法

    NumPy数组的扩展和压缩是指在不改变数组元素的情况下,改变数组的形状或尺寸。 数组的扩展 数组的扩展是指将一个数组扩展成一个更大或更小的形状。NumPy提供了几种方式来扩展数组,包括: numpy.reshape() numpy.resize() numpy.append() numpy.reshape() reshape()函数用于改变数组的形状,返回一…

    2023年 3月 1日
    00