如何预处理形状为(256,256,1)的三维numpy数组以绘制contourf等高线图
预处理操作说明
plt.contourf要求输入的压力值参数为二维数组,你现有形状为(256,256,1)的数组需要做以下几步处理:
- 第一步:删除最后一维冗余维度
最后一维长度为1,属于无效维度,直接用numpy的squeeze()方法压缩,得到形状为(256, 256)的二维压力值数组,即为contourf所需的Z参数。
示例代码:
import numpy as np # 假设原三维数组为raw_arr pressure_Z = np.squeeze(raw_arr)
- 第二步:生成X/Y坐标网格(按需选择)
如果需要使用实际坐标值而非默认索引作为横纵轴,可通过np.meshgrid生成对应坐标网格:
# 示例:x、y范围为0-255的索引坐标 x_coords = np.arange(256) y_coords = np.arange(256) X, Y = np.meshgrid(x_coords, y_coords) # 若有实际物理坐标范围,可替换为linspace生成 # x_coords = np.linspace(x_min, x_max, 256) # y_coords = np.linspace(y_min, y_max, 256)
- 第三步:调用绘图接口
处理完成后可直接传入参数绘图:
import matplotlib.pyplot as plt # 仅传压力值,用默认索引作为坐标 plt.contourf(pressure_Z) # 若生成了坐标网格,传入对应X/Y/Z即可 # plt.contourf(X, Y, pressure_Z) plt.show()
补充说明:如果最终绘图的坐标轴对应关系和预期相反,只需将压力值数组转置后传入即可:
plt.contourf(pressure_Z.T)
内容的提问来源于stack exchange,提问作者Eric Kwon
相关产品推荐
相关产品推荐

