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

绘制二元函数时循环计算输出形状错误的问题排查

问题分析:等高线图Z值计算循环错误导致的Shape异常

你编写的Z_values函数在计算Z矩阵时存在逻辑错误,导致最终返回的矩阵所有行都是空列表,触发TypeError。

原代码问题点

核心循环逻辑的问题出在这里:

def Z_values(X,Y,f):
  matrix=[]
  columns=[]
  for x in X:
    for y in Y:
       a=f(x,y)
       columns.append(a)
    matrix.append(columns)
    columns.clear()
  return matrix

因为列表是引用类型,matrix.append(columns)只是把columns的引用添加到了matrix中,后续调用columns.clear()会直接清空这个列表的内容——包括已经存在于matrix里的那一行数据。循环结束后,matrix里的所有元素都是指向同一个空列表的引用,最终Z矩阵的形状变成(len(X), 0),不符合plt.contour要求的至少(2,2)的输入规格。

修复方案

每次遍历x时新建一个columns列表,避免复用同一个列表对象:

def Z_values(X,Y,f):
  matrix=[]
  for x in X:
    columns=[]  # 每次循环x时重新创建列表
    for y in Y:
       a=f(x,y)
       columns.append(a)
    matrix.append(columns)
  return matrix

也可以用更简洁的列表推导式实现:

def Z_values(X,Y,f):
  return [[f(x,y) for y in Y] for x in X]

修改后,matrix中的每一行都是独立的列表,不会被后续操作清空,生成的Z矩阵形状为(len(X), len(Y)),完全符合plt.contour的输入要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:22:01