np.allclose, np.array_equal含义和用法
时间: 2025-07-20 13:42:04 浏览: 6
### numpy.allclose 和 numpy.array_equal 的含义及用法
#### 1. numpy.allclose
`numpy.allclose` 是一个用于比较两个数组是否在容差范围内相等的函数。它允许存在一定的误差,适用于浮点数计算中由于精度问题导致的小误差。
- **函数签名**:
```python
numpy.allclose(a, b, atol=1e-08, rtol=1e-05, equal_nan=False)
```
- **参数详解**:
- `a` 和 `b`:要比较的两个数组。
- `atol`:绝对容差,默认值为 `1e-08`。
- `rtol`:相对容差,默认值为 `1e-05`。
- `equal_nan`:如果设置为 `True`,则两个 `NaN` 值被视为相等。
- **返回值**:
如果两个数组的所有元素都在给定的容差范围内,则返回 `True`;否则返回 `False`。
- **示例代码**:
```python
import numpy as np
a = [1e10, 1e-8]
b = [1.00001e10, 2e-8]
print(np.allclose(a, b)) # 输出: False
print(np.allclose(a, b, atol=1e-7)) # 输出: True
```
- **注意**:
`allclose` 使用广播机制进行比较,因此输入数组不需要具有相同的形状[^3]。
---
#### 2. numpy.array_equal
`numpy.array_equal` 是一个用于判断两个数组是否完全相等的函数。它要求两个数组的形状和所有元素都必须相同。
- **函数签名**:
```python
numpy.array_equal(a1, a2)
```
- **参数详解**:
- `a1` 和 `a2`:要比较的两个数组。
- **返回值**:
如果两个数组的形状和所有元素都相同,则返回 `True`;否则返回 `False`。
- **示例代码**:
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([1, 2, 3])
c = np.array([1, 2, 4])
print(np.array_equal(a, b)) # 输出: True
print(np.array_equal(a, c)) # 输出: False
```
- **注意**:
`array_equal` 不支持广播机制,因此输入数组必须具有相同的形状[^3]。
---
#### 3. numpy.allclose 和 numpy.array_equal 的区别
| 特性 | `numpy.allclose` | `numpy.array_equal` |
|---------------------|---------------------------------------------------|-----------------------------------------|
| **容差范围** | 支持相对容差和绝对容差 | 不支持容差,要求完全相等 |
| **适用场景** | 浮点数运算结果的比较 | 精确匹配的数组比较 |
| **广播支持** | 支持广播机制 | 不支持广播机制 |
| **NaN 处理** | 可通过 `equal_nan=True` 将两个 NaN 视为相等 | 两个 NaN 始终不相等 |
---
### 示例对比
```python
import numpy as np
# 示例 1
a = np.array([1.0, 2.0, np.nan])
b = np.array([1.0, 2.0, np.nan])
print(np.allclose(a, b, equal_nan=True)) # 输出: True
print(np.array_equal(a, b)) # 输出: False
# 示例 2
c = np.array([1.0000001, 2.0])
d = np.array([1.0, 2.0])
print(np.allclose(c, d)) # 输出: True
print(np.array_equal(c, d)) # 输出: False
```
---
###
阅读全文
相关推荐




















