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

如何将二维插值生成的Z矩阵中指定范围外的数值点设置为0

你可以通过 numpy 布尔索引对插值后的z_new矩阵做掩码处理即可实现需求,具体实现如下:

实现步骤

  1. 先确认你图中红色框的坐标边界,即x轴的最小值/最大值、y轴的最小值/最大值,替换下方示例中的对应参数
  2. 生成和z_new维度一致的布尔掩码,将红框范围外的点位对应数值置为0
  3. 修正你原有代码里的笔误:contourf方法传入的znew应为z_new

修改后完整代码

import numpy as np
from scipy import interpolate
import matplotlib.pyplot as plt

# 你的原有数据处理逻辑
x = data.columns.astype('float64')
y = data.index.to_numpy()
z = data.to_numpy() 

ratio = 4
x_new = x * ratio
y_new = y * ratio

f = interpolate.interp2d(x, y, z, kind='linear')
z_new = f(x_new, y_new)
X_new, Y_new = np.meshgrid(x_new, y_new)

# ========== 新增:红框外数值置0逻辑 ==========
# 请替换为你实际红框的坐标范围
x_min, x_max = 2, 8  # 示例值,改为你红框的x轴上下限
y_min, y_max = 1, 6  # 示例值,改为你红框的y轴上下限

# 生成掩码:不在红框范围内的点位标记为True
mask = (X_new < x_min) | (X_new > x_max) | (Y_new < y_min) | (Y_new > y_max)
# 掩码对应位置的z值设为0
z_new[mask] = 0
# ========== 新增逻辑结束 ==========

# 绘图,修正原有笔误znew为z_new
plt.contourf(X_new, Y_new, z_new, alpha = 1, cmap=plt.cm.inferno)
plt.show()

扩展说明

如果你不需要将范围外数值置0,只是想让其不显示在图中,也可以把对应位置设为np.nan,matplotlib会自动渲染为透明区域,只需要把上面置0的代码替换为:

z_new[mask] = np.nan

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:54:03