本文档详细解释了Python库NumPy中的where()函数的工作原理及其返回值。通过实例帮助读者理解其在数组条件选择的应用。
`numpy.where()` 函数是 Python 的 NumPy 库中的一个非常实用的函数,它用于根据提供的条件返回数组中元素的索引。这个函数通常用来在数组中查找满足特定条件的元素,并返回这些元素的位置而非它们的值。
使用 `numpy.where()` 时的基本语法如下:
```python
numpy.where(condition, [x, y])
```
这里,`condition` 是一个布尔类型的数组,用于表示需要检查的具体条件。如果 `condition` 中的某个位置为 `True` ,则返回对应位置在数组 `x` 或者 `y` 的元素;若为 `False` ,则返回另一个数组中的相应值。当仅提供参数 `condition` 时,此函数将输出满足该条件的所有元素的位置。
例如,在以下情况中:
```python
x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
```
如果我们想找出所有大于5的数值在数组中的位置,可以使用 `numpy.where()` 函数如下所示:
```python
indices = np.where(x > 5)
```
在这种情况下,`indices` 是一个元组,其中包含两个数组。这两个数组分别代表满足条件元素所在的行索引和列索引。对于上述的 `x` 数组,执行此操作后得到的结果是 `(array([1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2]))` ,这表示元素 (6、7、8 和9) 在 `x` 中的位置。
对于以下的数组:
```python
x = np.arange(9.).reshape(3, 3)
result = np.where(x > 5)
```
这里的输出结果是 `(array([2, 2, 2]), array([0, 1, 2]))`,表示 `x` 中满足条件 `x>5` 的元素位置为 (2,0)、(2,1) 和 (2,2),即数组中的6、7和8。
需要注意的是,在仅提供一个参数给 `numpy.where()` 函数时,返回的结果是满足条件的元素的位置索引而非它们的具体值。如果需要获取这些具体的数值,则可以结合使用其他 NumPy 方法如切片操作等来实现。
总结来说,`numpy.where()` 是处理数组中特定条件下查询的重要工具之一,它能够帮助我们高效地定位到数据中的目标位置,并在实际应用中与其它函数配合使用以进行更加复杂的条件赋值。