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

聚类热图中低数值区域的方块与条纹模式检测方法咨询

识别聚类热图低数值区域的方块/条纹模式

核心思路

先通过阈值规则生成低数值区域的二进制掩码,再分析区域的形状特征(宽高比)来区分方块或条纹模式。

步骤1:生成低数值区域掩码

根据需求选择阈值方式,将低于阈值的单元格标记为目标区域:

import numpy as np

# 替换为你的聚类热图矩阵(二维numpy数组)
matrix = np.random.rand(50, 50)  # 示例随机矩阵

# 二选一设置阈值
# 方式1:固定阈值0.5
threshold = 0.5
# 方式2:整体分布第10百分位
threshold = np.percentile(matrix, 10)

# 生成二进制掩码,True表示低数值目标区域
mask = matrix < threshold

步骤2:分析连通区域的形状特征

用scipy.ndimage提取连通区域,通过计算区域最小外接矩形的宽高比判断模式:

from scipy.ndimage import label, find_objects

# 标记连通区域(默认4邻域:上下左右;需8邻域则添加structure=np.ones((3,3)))
labeled_mask, num_regions = label(mask)

# 遍历每个连通区域判断模式
for region_idx in range(1, num_regions + 1):
    # 获取区域的边界框(行范围、列范围)
    bbox = find_objects(labeled_mask == region_idx)[0]
    # 计算区域的高度(行数)和宽度(列数)
    region_h = bbox[0].stop - bbox[0].start
    region_w = bbox[1].stop - bbox[1].start
    
    # 计算宽高比(避免除零)
    aspect_ratio = region_w / region_h if region_h != 0 else 0
    
    # 根据宽高比判断模式(阈值可根据数据调整)
    if 0.8 <= aspect_ratio <= 1.2:
        print(f"区域{region_idx}:方块模式")
    elif aspect_ratio > 3:
        print(f"区域{region_idx}:横向条纹模式")
    elif aspect_ratio < 1/3:
        print(f"区域{region_idx}:纵向条纹模式")
    else:
        print(f"区域{region_idx}:过渡/不规则模式")

补充说明

  • 连通区域的邻域规则可按需调整:4邻域仅识别上下左右连通的区域,8邻域包含对角线连通的区域
  • 宽高比的阈值(0.8-1.2、3、1/3)可根据你的实际数据分布灵活修改,比如窄条纹可将阈值设为5或1/5
  • 若存在多个分散的低数值区域,上述代码会逐个判断每个区域的模式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:05:01