- NumPy 教程
- NumPy - 首页
- NumPy - 简介
- NumPy - 环境配置
- NumPy 数组
- NumPy - Ndarray 对象
- NumPy - 数据类型
- NumPy 数组的创建和操作
- NumPy - 数组创建例程
- NumPy - 数组操作
- NumPy - 从现有数据创建数组
- NumPy - 从数值范围创建数组
- NumPy - 数组迭代
- NumPy - 数组重塑
- NumPy - 数组拼接
- NumPy - 数组堆叠
- NumPy - 数组分割
- NumPy - 数组扁平化
- NumPy - 数组转置
- NumPy 索引和切片
- NumPy - 索引与切片
- NumPy - 高级索引
- NumPy 数组属性和操作
- NumPy - 数组属性
- NumPy - 数组形状
- NumPy - 数组大小
- NumPy - 数组步幅
- NumPy - 数组元素大小
- NumPy - 广播
- NumPy - 算术运算
- NumPy - 数组加法
- NumPy - 数组减法
- NumPy - 数组乘法
- NumPy 数组除法
- NumPy 高级数组操作
- NumPy - 交换数组轴
- NumPy - 字节交换
- NumPy - 复制与视图
- NumPy - 元素级数组比较
- NumPy - 数组过滤
- NumPy - 数组连接
- NumPy - 排序、搜索和计数函数
- NumPy - 数组搜索
- NumPy - 数组的并集
- NumPy - 查找唯一行
- NumPy - 创建日期时间数组
- NumPy - 二元运算符
- NumPy - 字符串函数
- NumPy - 数学函数
- NumPy - 统计函数
- NumPy - 矩阵库
- NumPy - 线性代数
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 绘制直方图
- NumPy - NumPy 的 I/O 操作
- NumPy 排序和高级操作
- NumPy - 数组排序
- NumPy - 沿轴排序
- NumPy - 使用花式索引排序
- NumPy - 结构化数组
- NumPy - 创建结构化数组
- NumPy - 操作结构化数组
- NumPy - 字段访问
- NumPy - 记录数组
- NumPy - 加载数组
- NumPy - 保存数组
- NumPy - 向数组追加值
- NumPy - 交换数组列
- NumPy - 向数组插入轴
- NumPy 处理缺失数据
- NumPy - 处理缺失数据
- NumPy - 识别缺失值
- NumPy - 删除缺失数据
- NumPy - 缺失数据插补
- NumPy 性能优化
- NumPy - 使用数组进行性能优化
- NumPy - 使用数组进行矢量化
- NumPy - 数组的内存布局
- NumPy 线性代数
- NumPy - 线性代数
- NumPy - 矩阵库
- NumPy - 矩阵加法
- NumPy - 矩阵减法
- NumPy - 矩阵乘法
- NumPy - 元素级矩阵运算
- NumPy - 点积
- NumPy - 矩阵求逆
- NumPy - 行列式计算
- NumPy - 特征值
- NumPy - 特征向量
- NumPy - 奇异值分解
- NumPy - 求解线性方程组
- NumPy - 矩阵范数
- NumPy 元素级矩阵运算
- NumPy - 求和
- NumPy - 平均值
- NumPy - 中位数
- NumPy - 最小值
- NumPy - 最大值
- NumPy 集合运算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 并集
- NumPy - 差集
- NumPy 有用资源
- NumPy 编译器
- NumPy - 快速指南
- NumPy - 有用资源
- NumPy - 讨论
NumPy 数组除法
NumPy 数组除法
NumPy 数组除法是指对两个数组进行逐元素除法的过程。在此上下文中,逐元素除法意味着一个数组中的每个元素都除以另一个数组中对应的元素。
此操作支持广播,允许对不同形状的数组进行除法。此外,可以在数组和标量之间执行除法,这将相应地缩放数组的每个元素。
NumPy 中的逐元素除法
NumPy 中的逐元素除法是指将一个数组的每个元素除以另一个数组中对应的元素。此操作逐元素执行,这意味着除法在两个数组中相同位置的元素之间成对发生。
为了使逐元素除法能够工作,两个数组必须具有相同的形状,或者它们必须能够广播到一个公共形状。
在 NumPy 中,除法运算符 / 用于执行逐元素除法。如果数组具有不同的形状但对于广播是兼容的,NumPy 将自动应用广播规则来执行除法。
示例
在下面的示例中,我们将数组 a 的每个元素除以数组 b 中对应的元素:
import numpy as np # Creating two arrays a = np.array([10, 20, 30]) b = np.array([2, 5, 10]) # Performing element-wise division result = a / b print(result)
以下是获得的输出:
[5. 4. 3.]
NumPy 中的标量除法
NumPy 中的标量除法是指将数组的每个元素除以单个标量值。此操作将除法应用于数组的每个元素,从而产生一个新数组,其中每个元素都除以标量。
示例
在这个例子中,我们将数组“a”的每个元素除以标量“10”:
import numpy as np # Creating an array a = np.array([10, 20, 30]) # Dividing by a scalar result = a / 10 print(result)
这将产生以下结果:
[1. 2. 3.]
数组除法中的广播
广播允许对不同形状的数组进行运算。当对不同形状的数组执行除法时,NumPy 会自动调整形状以便可以执行该运算。
在执行数组除法时,广播允许您通过自动沿缺失维度扩展较小的数组以匹配较大数组的形状来除不同大小或形状的数组。
这种扩展以允许逐元素运算(如除法)在不显式复制数据的情况下执行的方式进行。
示例
在下面的示例中,数组“b”被广播以匹配数组“a”的形状,然后执行逐元素除法:
import numpy as np # Creating arrays with different shapes a = np.array([[10, 20, 30], [40, 50, 60]]) b = np.array([10, 5, 2]) # Performing division with broadcasting result = a / b print(result)
以下是上述代码的输出:
[[ 1. 4. 15.] [ 4. 10. 30.]]
处理除以零
在 NumPy 中执行除法运算时,一个常见问题是可能除以零,这可能导致未定义或无限的结果。NumPy 提供了处理此类情况的方法,可以通过返回特殊值(如 inf 或 nan)或根据具体用例引发警告或错误来实现。
- 正/负无穷大 (inf 或 -inf) − 当正数或负数除以零时返回。
- 非数字 (nan) − 当零除以零时返回。
示例:基本的除以零
让我们看看 NumPy 如何处理简单的除以零:
import numpy as np # Creating an array with a zero element array = np.array([10, 0, -5]) # Dividing a constant by the array result = 100 / array print(result)
NumPy 不会引发错误,而是返回除以零的“inf”:
/home/cg/root/66c57b63ef7f5/main.py:7: RuntimeWarning: divide by zero encountered in divide result = 100 / array [ 10. inf -20.]
示例:使用 errstate() 函数处理除以零
您可以使用 np.errstate() 函数控制 NumPy 如何处理除以零。此函数允许您指定是否忽略、警告或为浮点错误(如除以零)引发错误:
import numpy as np # Creating an array with a zero element array = np.array([10, 0, -5]) with np.errstate(divide='ignore', invalid='ignore'): result = 100 / array print(result)
在这里,我们将 errstate() 函数中的“divide”参数设置为“ignore”以忽略通常在除以零时出现的警告。结果仍然包含“inf”,但没有任何中断或警告:
/home/cg/root/66c57b63ef7f5/main.py:7: RuntimeWarning: divide by zero encountered in divide result = 100 / array [ 10. inf -20.]
示例:处理 nan 值
当零除以零时,结果为 nan(非数字)。此特殊值用于表示浮点计算中未定义或无法表示的值:
import numpy as np # Creating arrays with zero elements numerator = np.array([0, 1, 2]) denominator = np.array([0, 0, 2]) # Performing division result = numerator / denominator print(result)
产生的结果如下:
[ 10. inf -20.]
不同数据类型的除法
当对不同数据类型的数组执行除法时,NumPy 会自动将数据类型提升到可以安全地包含结果的公共类型。
例如,如果您将整数数组除以浮点数组,则结果将是浮点数组。这种类型提升可以防止数据丢失并确保结果的精度。
示例
在此示例中,NumPy 在执行除法之前将整数数组 a 提升为浮点类型以匹配数组 b 的数据类型:
import numpy as np # Creating arrays with different data types a = np.array([10, 20, 30], dtype=np.int32) b = np.array([2.5, 5.0, 10.0], dtype=np.float64) # Performing division result = a / b print(result)
我们得到如下所示的输出:
[4. 4. 3.]
NumPy 中的矩阵除法
矩阵除法不像逐元素除法或标量除法那样简单。但是,您可以使用 NumPy 中矩阵的逆矩阵进行矩阵乘法来解决类似矩阵除法的运算。
示例
在此示例中,我们使用矩阵 B 的逆矩阵在 NumPy 中执行类似除法的运算:
import numpy as np # Creating a matrix A = np.array([[1, 2], [3, 4]]) # Creating another matrix B = np.array([[2, 0], [1, 3]]) # Solving the matrix division A/B # Equivalent to A * B^-1 result = np.dot(A, np.linalg.inv(B)) print(result)
以下是获得的输出:
[[0.16666667 0.66666667] [0.83333333 1.33333333]]
处理除法中的维度不匹配
当在 NumPy 中对数组执行除法运算时,如果数组不共享兼容的形状,则可能会发生维度不匹配。NumPy 通过广播来解决此问题,并在这种情况下引发 ValueError。
示例
在下面的示例中,“a”和“b”的形状对于广播不兼容,导致错误:
import numpy as np # Creating arrays with incompatible shapes a = np.array([1, 2, 3]) b = np.array([[1, 2], [3, 4]]) # Attempting to divide incompatible arrays result = a / b print(result)
产生的结果如下:
Traceback (most recent call last): File "/home/cg/root/66c57b63ef7f5/main.py", line 8, in <module> result = a / b ValueError: operands could not be broadcast together with shapes (3,) (2,2)