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

如何将Numpy数组转换为彩色表格或图像?附示例数组

嘿,我来给你分享两种实用的方法,把你的NumPy数组转换成彩色表格或者可视化图像,直接上代码和解释,你跟着来就行~

方法一:转换成彩色表格(用Pandas样式)

如果你想要保留数组的数值信息,同时用颜色直观展示数值大小,用Pandas的样式功能最合适。步骤很简单:

  1. 先把NumPy数组转换成Pandas的DataFrame
  2. 用background_gradient方法给表格加上颜色渐变,数值越大颜色越深(或根据你选的配色)

示例代码:

import numpy as np
import pandas as pd

# 补全你给出的NumPy数组
arr = np.array([
    [0, 0, 0, 0, 0, 0, 27, 541, 1296, 10000],
    [0, 0, 0, 0, 1, 44, 355, 1998, 3272, 10000],
    [0, 0, 0, 2, 18, 209, 1069, 3239, 4670, 10000],
    [0, 0, 0, 10, 96, 486, 1522, 3954, 5379, 10000],
    [0, 0, 2, 28, 216, 748, 2127, 4769, 6011, 10000],
    [0, 0, 18, 82, 379, 1200, 2867, 5395, 6528, 10000],
    [0, 3, 39, 147, 599, 1489, 3237, 5740, 6909, 10000],
    [0, 6, 48, 246, 759, 1777, 3610, 6034, 7144, 10000],
    [0, 12, 90, 324, 1009, 2072, 3980, 6365, 7466, 10000],
    [1, 12, 128, 420, 1218, 2325, 4260, 6640, 7680, 10000]
])

# 转成DataFrame
df = pd.DataFrame(arr)

# 生成彩色表格,用viridis配色,数值格式化保留整数
color_table = df.style.background_gradient(cmap='viridis').format("{:.0f}")

# 在Jupyter环境中直接显示,或者保存成HTML文件
color_table.to_html('color_table.html')
print("彩色表格已保存为HTML文件,打开即可查看")
方法二:转换成彩色热力图(用Matplotlib)

如果你更想要“图像”形式的可视化,用Matplotlib的imshow可以生成热力图,能直观展示数值的整体分布:

示例代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import Normalize

# 补全后的NumPy数组
arr = np.array([
    [0, 0, 0, 0, 0, 0, 27, 541, 1296, 10000],
    [0, 0, 0, 0, 1, 44, 355, 1998, 3272, 10000],
    [0, 0, 0, 2, 18, 209, 1069, 3239, 4670, 10000],
    [0, 0, 0, 10, 96, 486, 1522, 3954, 5379, 10000],
    [0, 0, 2, 28, 216, 748, 2127, 4769, 6011, 10000],
    [0, 0, 18, 82, 379, 1200, 2867, 5395, 6528, 10000],
    [0, 3, 39, 147, 599, 1489, 3237, 5740, 6909, 10000],
    [0, 6, 48, 246, 759, 1777, 3610, 6034, 7144, 10000],
    [0, 12, 90, 324, 1009, 2072, 3980, 6365, 7466, 10000],
    [1, 12, 128, 420, 1218, 2325, 4260, 6640, 7680, 10000]
])

# 设置画布大小
fig, ax = plt.subplots(figsize=(10, 8))

# 归一化数值,解决数组内数值差距过大导致颜色分布不均的问题
norm = Normalize(vmin=arr.min(), vmax=arr.max())
im = ax.imshow(arr, cmap='viridis', norm=norm)

# 添加颜色条,标注数值对应颜色
fig.colorbar(im, ax=ax, label='数值大小')

# 给每个单元格标注具体数值,自动适配文字颜色
for i in range(arr.shape[0]):
    for j in range(arr.shape[1]):
        text_color = "white" if arr[i,j] > arr.max()/2 else "black"
        ax.text(j, i, arr[i, j], ha="center", va="center", color=text_color)

# 设置标题
ax.set_title('NumPy数组彩色热力图')
plt.show()

# 保存高清图像
plt.savefig('color_heatmap.png', dpi=300, bbox_inches='tight')

小提示

  • 你可以替换cmap参数的取值,比如'plasma'、'coolwarm'等,Matplotlib内置了几十种配色方案
  • 如果数组内数值跨度极大,Normalize归一化能让颜色过渡更自然,避免大部分区域颜色一致
  • 彩色表格适合需要精确查看数值的场景,热力图更适合快速观察数值的整体分布规律

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:14:33