np.argwhere的用法
时间: 2023-08-15 14:56:55 浏览: 49
`np.argwhere`函数返回数组中非零元素的索引。
具体用法如下:
```python
import numpy as np
arr = np.array([[0, 1, 0],
[1, 0, 1],
[0, 1, 0]])
indices = np.argwhere(arr != 0)
print(indices)
```
输出:
```
[[0 1]
[1 0]
[1 2]
[2 1]]
```
在这个例子中,我们首先创建了一个二维的numpy数组`arr`。然后,我们使用`np.argwhere`函数查找`arr`中非零元素的索引。在这个例子中,返回的结果是一个二维的numpy数组,其中每一行记录着一个非零元素的索引。
需要注意的是,`np.argwhere`返回的索引数组的形状与原始数组的维数相同。在上面的例子中,`arr`是一个二维数组,因此返回的索引数组也是一个二维数组。如果`arr`是一个一维数组,则返回的索引数组也是一个二维数组,其中每一行只有一个元素。
相关问题
np.argwhere与np.where区别
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]
```