gpt4 book ai didi

python - 如何在 2D numpy 数组中识别/查找 1D numpy 数组模式?

转载 作者:行者123 更新时间:2023-12-01 07:39:52 24 4
gpt4 key购买 nike

我有一个 2D numpy 数组,并且正在尝试查找它等于 1D 数组的条目,但是这两个数组的维度禁止广播。具体来说,我的 2D 数组类似于 300x400,我想看看它在哪里等于 2 元素行向量 [1, -1]

我正在尝试查找图像中位于分割边界的像素的位置。在此蒙版中,1 表示与前景相邻,-1 与背景相邻。因此,我需要找到掩码行中出现 [1,-1] 的位置,比如说 a

我尝试过a == [1,-1],但这只是执行对象级相等并返回False

我想我可以用

来做到这一点
for i in range(a.shape[0]): 
for j in range(a.shape[1]-1):
if a[i,j] == 1:
if a[i,j+1] == -1:
print(i)

但是有没有一些可爱的方法可以用 numpy 方法或其他方法来做到这一点?我讨厌循环

最佳答案

arr = np.array([[1,1,-1],[1,-1,-1]])
arr_idx = (arr==1)[:,:-1] & (arr==-1)[:,1:]

给予

>>> arr_idx
array([[False, True],
[ True, False]])

这是符合您标准的事物的索引。请注意,其形状比输入矩阵少一列(出于显而易见的原因)。

您可以在一侧或另一侧添加一列,以将索引更改为您要查找的对的任一侧。

arr_idx = np.concatenate((np.zeros(shape=(2, 1), dtype=bool), arr_idx), axis=1)
>>> arr_idx
array([[False, False, True],
[False, True, False]])

在左侧粘贴一个新列给出该对的 -1 分量的索引。

关于python - 如何在 2D numpy 数组中识别/查找 1D numpy 数组模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56777111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com