赞
踩
NumPy 中的 `numpy.where` 函数用于根据指定条件返回符合条件的数组元素的索引值或者修改后的值。它可以处理三个参数:
```python
numpy.where(condition[, x, y])
```
其中,`condition` 是一个布尔型数组,它指定了需要检索的条件。在满足条件的位置上,函数会返回 `x` 数组上对应位置的值;否则,函数会返回 `y` 数组上对应位置的值(如果 `y` 未提供,则默认返回满足条件的元素的下标)。
以下是 `numpy.where` 函数的示例:
```python
import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.array([10, 20, 30, 40, 50])
condition = a > 3
result = np.where(condition, b, a)
print(result) # 输出 [1 2 3 40 50]
```
在这个例子中,我们首先使用 `a > 3` 得到一个布尔型数组,表示 `a` 中每个元素是否大于 3。然后,我们调用 `numpy.where` 函数,并将这个布尔型数组作为第一个参数传递进去。由于 `condition` 的第四个和第五个元素为 `True`,因此 `np.where(condition, b, a)` 返回的数组的第四个和第五个元素就是相应位置上的 `b` 中的值,即 40 和 50,而其他位置上的值和 `a` 中对应位置的值相同。
除了上述示例中使用的形式外,还可以省略第二个和第三个参数,让 `numpy.where` 函数返回符合条件的元素下标:
```python
import numpy as np
a = np.array([1, 2, 3, 4, 5])
condition = a > 3
result = np.where(condition)
print(result) # 输出 (array([3, 4]),)
```
这里,我们只需要满足条件的元素的索引位置,因此仅传递了一个参数。在返回结果中,`(array([3, 4]),)` 表示有两个元素满足条件,分别位于数组 `a` 的第四个位置和第五个位置上(Python 从 0 开始计数)。如果我们想获取每个满足条件的元素所对应的下标,则可以使用 Python 列表元素的解包特性:
```python
import numpy as np
a = np.array([1, 2, 3, 4, 5])
condition = a > 3
result = np.where(condition)
print(list(result[0])) # 输出 [3, 4]
```
以上就是 `numpy.where` 函数的基本用法和示例。它是 NumPy 库中常用的函数之一,可以帮助我们高效地处理
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。