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

如何使用Numpy计算两个向量的交集?

用Numpy计算二维向量的交集问题

你遇到的问题是numpy.intersect1d返回结果不符合预期,原因是该函数会自动将输入的多维向量扁平化处理。比如你提到的两个二维数组:

a = np.array([[1], [2], [3]])
b = np.array([[2], [3], [4]])

直接调用np.intersect1d(a, b)会返回一维数组array([2, 3]),但你需要的是保持二维结构的[[2], [3]]。以下是两种解决方法:

  • 方法一:先找一维交集再重塑形状

    import numpy as np
    
    a = np.array([[1], [2], [3]])
    b = np.array([[2], [3], [4]])
    
    # 获取一维交集结果
    intersect_1d = np.intersect1d(a, b)
    # 重塑为二维向量格式
    intersect_2d = intersect_1d.reshape(-1, 1)
    print(intersect_2d)
    # 输出:
    # [[2]
    #  [3]]
    
  • 方法二:用布尔索引直接筛选

    import numpy as np
    
    a = np.array([[1], [2], [3]])
    b = np.array([[2], [3], [4]])
    
    # 生成a中元素是否存在于b的掩码
    mask = np.in1d(a, b)
    # 筛选并保持二维结构
    intersect_2d = a[mask].reshape(-1, 1)
    print(intersect_2d)
    

如果需要保留原数组的元素顺序,可以结合return_indices参数调整:

intersect_1d, idx_a, idx_b = np.intersect1d(a, b, return_indices=True)
# 按原数组a中的顺序返回二维交集
intersect_2d = a[idx_a].reshape(-1, 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:01:06