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

如何用无循环方法统计1D数组与3D数组各最后维度的公共元素数

1D数组与3D数组各最后维度的公共元素数量统计

解决方案代码

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([
    [[1, 6], [2, 7], [3, 8]],
    [[4, 9], [5, 10], [6, 11]],
    [[7, 12], [8, 13], [9, 14]]
])

# 生成布尔掩码:标记arr2中每个元素是否在arr1内
element_in_arr1 = np.isin(arr2, arr1)
# 沿最后维度求和,得到每个子数组的公共元素数量
common_counts = element_in_arr1.sum(axis=-1)

print(common_counts)

代码说明

  1. 布尔掩码生成:np.isin(arr2, arr1) 会遍历arr2的所有元素,判断其是否存在于arr1中,输出一个与arr2形状完全一致的布尔数组——匹配的元素为True(等价于数值1),不匹配为False(等价于数值0)。
  2. 维度求和:sum(axis=-1) 指定沿数组的最后一个维度(即需要单独对比的每个子数组,比如示例中的[2,7])进行求和,直接得到每个子数组与arr1的公共元素数量。

运行结果

[[1 1 1]
 [0 0 0]
 [0 0 0]]

结果对应arr2中每个最后维度的统计值:比如子数组[2,7]与arr1的公共元素数量为1,完全符合需求。

优势

全程使用numpy的向量化操作,无需手动编写循环,既保证代码简洁性,又能利用numpy底层的优化实现,处理大规模数组时效率远高于Python循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:02:04