np.argwhere返回空数组
时间: 2023-08-14 11:03:01 浏览: 155
np.argwhere返回空数组的原因可能是输入数组中没有满足条件的元素。np.argwhere函数用于查找满足指定条件的元素的索引。如果没有符合条件的元素,则返回一个空数组。
请检查一下你的输入数组和条件,确保输入数组中存在满足条件的元素。另外,还可以尝试使用其他的条件或者调整条件,看看是否能够得到非空的结果。
以下是一个示例代码,演示了如何使用np.argwhere函数:
```python
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
condition = arr % 2 == 0
indices = np.argwhere(condition)
if indices.size == 0:
print("Empty array")
else:
print(indices)
```
在这个例子中,我们通过对arr数组进行取余操作,得到一个条件数组condition,然后使用np.argwhere函数找到满足条件的元素的索引。如果找到了满足条件的元素,就打印出索引;否则打印"Empty array"。
相关问题
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]
```
阅读全文