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

求助:拆分大型3D structured array并绘制多组colormap的实现方法

3D数组分组绘制热力图实现方案

问题说明

现有一个包含48400000个元素的3D NumPy数组,实际结构为1000组独立的484×10二维数组,需要为每组数据单独绘制热力图(colormap)。

原代码问题分析

  • np.split(x, [4840])仅将数组分割为前后两部分,无法得到1000组目标子数组
  • reshape(y, 4840*10)破坏了每组484×10的二维结构,无法用于热力图绘制

正确实现方案

步骤1:数据加载与形状校准

先加载数据并将原始数组重塑为(1000, 484, 10)的三维结构,确保每组对应一个484×10的二维数组。

步骤2:批量绘制热力图

通过循环遍历每组数据,为每组单独创建热力图,可选择逐个展示或批量保存。

完整代码

import numpy as np
import matplotlib.pyplot as plt

# 加载数据
data = np.load('C:/Users/**/***.npz', allow_pickle=True)
weights = data['weights']

# 重塑为1000组484×10的结构
# 先确认原始形状是否匹配:weights.size 应该等于 1000*484*10=48400000
assert weights.size == 48400000, "数据规模不匹配目标结构"
grouped_data = weights.reshape(1000, 484, 10)

# 循环绘制每组的热力图
for i in range(1000):
    plt.figure(figsize=(8, 12))  # 根据484×10的比例调整画布大小
    plt.imshow(grouped_data[i], cmap='viridis')  # 可替换其他colormap,比如'jet'
    plt.title(f"第{i+1}组数据热力图")
    plt.colorbar(label='数值')
    plt.xlabel("X轴(10列)")
    plt.ylabel("Y轴(484行)")
    
    # 可选:保存图片到本地
    # plt.savefig(f"group_{i+1}_heatmap.png", dpi=100, bbox_inches='tight')
    
    plt.show()
    plt.close()  # 关闭画布释放内存

补充说明

  • 若不需要逐个展示,可注释掉plt.show(),仅保留plt.savefig()实现批量导出
  • cmap参数可替换为Matplotlib支持的任意配色方案,比如'plasma'、'coolwarm'等
  • 画布大小figsize可根据需求调整,适配484行×10列的长条形结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:50:55