np.argwhere与np.where区别
时间: 2023-08-16 15:13:52 浏览: 52
np.argwhere和np.where都是NumPy中用于查找数组中满足某个条件的元素索引的函数。它们的主要区别在于返回结果的形式和用法上。
np.where(condition)函数返回满足条件的元素的索引,以元组的形式表示。每个元组表示一个满足条件的元素的索引。如果数组是一维的,那么返回的结果是一个一维数组;如果数组是多维的,那么返回的结果是一个元组,其中每个元素是一个一维数组。
np.argwhere(condition)函数返回满足条件的元素的索引,以二维数组的形式表示。每一行表示一个满足条件的元素的索引。其中,每一行的第一个元素表示该元素在第0维的索引,第二个元素表示该元素在第1维的索引,以此类推。返回的结果是一个二维数组。
简而言之,np.where返回满足条件的元素索引的元组或数组,而np.argwhere返回满足条件的元素索引的二维数组。
相关问题
np.argwhere和np.where有什么区别?
np.argwhere和np.where都是用于根据条件返回数组中满足条件的元素的索引。它们的区别在于返回结果的形式和使用方式。
np.argwhere返回一个二维数组,其中每一行表示一个满足条件的元素的索引。每一行的元素是一个包含数组维度的元组,表示该元素在数组中的位置。
np.where返回一个包含满足条件的元素的索引的元组。如果只提供条件,它将返回一个包含满足条件的元素的索引的元组。如果同时提供了x和y参数,它将返回一个与条件相同形状的数组,其中满足条件的元素来自x,不满足条件的元素来自y。
下面是两个函数的示例使用方法:
1. 使用np.argwhere获取满足条件的元素的索引[^1]:
```python
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
condition = arr > 5
indices = np.argwhere(condition)
print(indices)
```
输出:
```
[[1 2]
[2 0]
[2 1]
[2 2]]
```
2. 使用np.where获取满足条件的元素的索引或根据条件返回不同的值:
```python
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
condition = arr > 3
indices = np.where(condition)
print(indices)
x = np.array([1, 2, 3, 4, 5])
y = np.array([10, 20, 30, 40, 50])
result = np.where(condition, x, y)
print(result)
```
输出:
```
(array([3, 4]),)
[10 20 30 4 5]
```
User np.argwhere()与np.where()
`np.argwhere()`和`np.where()`都是NumPy库中的函数,用于在数组中查找满足条件的元素的索引。
`np.where()`函数返回满足条件的元素的索引,而`np.argwhere()`函数返回满足条件的元素的坐标,即每个元素的索引值组成的元组。
以下是两个函数的使用示例:
```python
import numpy as np
# 创建一个二维数组
arr = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
# 使用np.where()函数查找数组中大于3的元素的索引
indices = np.where(arr > 3)
print(indices) # 输出:(array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2]))
# 使用np.argwhere()函数查找数组中大于3的元素的坐标
coordinates = np.argwhere(arr > 3)
print(coordinates) # 输出:[[1 1][1 2][2 0][2 1][2 2]]
```