np.argwhere的用法
时间: 2023-10-17 12:08:40 浏览: 60
`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`是一个一维数组,则返回的索引数组也是一个二维数组,其中每一行只有一个元素。
相关问题
# 定义获得时序最大值坐标的函数 def TSMaxIndex(array, first = True): array = np.array(array).flatten() if first: return np.argmax(array) else: max_index = np.argwhere(array == np.amax(array)).flatten() return max_index[-1]
TSMaxIndex函数是一个用于获得时序最大值坐标的函数。它接受一个数组作为输入,并可选地指定返回第一个最大值的索引还是最后一个最大值的索引。首先,将输入数组转换为一维数组。如果指定返回第一个最大值的索引(first参数为True),则使用numpy的argmax方法返回第一个最大值的索引。如果指定返回最后一个最大值的索引(first参数为False),则使用numpy的argwhere方法找到所有最大值的索引,然后返回最后一个最大值的索引。
import cv2 import numpy as np def get_largest_connected_component_points(mask): # 连通域标记 _, labels, stats, _ = cv2.connectedComponentsWithStats(mask, connectivity=8) # 获取连通域的面积 areas = stats[:, cv2.CC_STAT_AREA] # 找到面积最大的连通域的标签 largest_label = np.argmax(areas[1:]) + 1 # 提取连通域的坐标点 points = np.argwhere(labels == largest_label) return points
你提供的代码函数`get_largest_connected_component_points`通过cv2.connectedComponentsWithStats函数找到图像中的连通域,并获取连通域的面积。然后,它找到面积最大的连通域的标签,并使用np.argwhere函数提取该连通域的坐标点。
这个函数在获取最大面积连通域的坐标点方面是正确的。它使用了连通域分析的方法来找到连通域并计算其面积,然后选择面积最大的连通域。最后,通过np.argwhere函数获取该连通域的所有坐标点。
如果你将一个二值化的掩膜图像传递给这个函数,它应该返回最大面积连通域内的所有像素坐标点。
阅读全文