You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Numpy二维坐标数组中定位指定坐标的位置?

解决二维NumPy数组筛选特定坐标的问题

这里提供两种简洁的方法来实现你的需求:

方法一:利用广播与数组维度操作

通过NumPy的广播特性,批量比较每个测试坐标与所有特定坐标是否完全匹配:

import numpy as np

values_to_test = np.array([[1 , 0],[2 , 0],[2 , 0.5],[1 , 0.5],[0 , 0],[2 , 1], [0 , 0.5],[1 , 1],[0 , 1]])
specific_values = np.array([[1,0],[0,0],[1,1]])

# 广播后逐行比较是否完全匹配,再取任意匹配结果
match_result = (values_to_test[:, None, :] == specific_values).all(axis=2).any(axis=1)
print(match_result)
# 输出:[ True False False False  True False False  True False]

代码说明:

  • values_to_test[:, None, :] 将原数组的形状从 (9,2) 转换为 (9,1,2),实现和 specific_values(形状 (3,2))的广播对齐
  • .all(axis=2) 检查每个坐标对的所有元素是否完全相等,得到形状为 (9,3) 的布尔数组,每一行对应测试坐标与3个特定坐标的匹配情况
  • .any(axis=1) 对每一行取逻辑或,只要当前测试坐标匹配任意一个特定坐标,结果就为 True

方法二:转换为元组后使用np.isin

将二维数组的每个子坐标转换为元组,再利用np.isin进行成员判断,逻辑更直观:

import numpy as np

values_to_test = np.array([[1 , 0],[2 , 0],[2 , 0.5],[1 , 0.5],[0 , 0],[2 , 1], [0 , 0.5],[1 , 1],[0 , 1]])
specific_values = np.array([[1,0],[0,0],[1,1]])

# 将数组元素转为元组
test_tuples = [tuple(coord) for coord in values_to_test]
specific_tuples = [tuple(coord) for coord in specific_values]

# 直接判断成员关系
match_result = np.isin(test_tuples, specific_tuples)
print(match_result)
# 输出:[ True False False False  True False False  True False]

内容的提问来源于stack exchange,提问作者Charith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 08:27:26