【问题标题】:ValueError: shape mismatch: objects cannot be broadcast to a single shapeValueError:形状不匹配:无法将对象广播到单个形状
【发布时间】:2023-06-12 22:35:01
【问题描述】:

我正在使用 SciPy 的 pearsonr(x,y) 方法,但我无法弄清楚为什么会发生以下错误:

ValueError:形状不匹配:无法将对象广播到单个形状

它计算前两个(我正在循环运行数千个这样的测试)然后死掉。有没有人知道问题可能是什么?

r_num = n*(np.add.reduce(xm*ym))

这是 pearsonr 方法中发生错误的行,任何帮助将不胜感激。

【问题讨论】:

    标签: python valueerror pearson


    【解决方案1】:

    此特定错误意味着在该行的算术中使用的一个变量的形状与同一行上的另一个变量的形状不兼容(即,既不同又非标量)。由于nnp.add.reduce() 的输出都是标量,这意味着问题在于xmym,这两个只是你的xy 输入减去它们各自的平均值。

    基于此,我的猜测是您的 xy 输入具有彼此不同的形状,这使得它们不兼容逐元素乘法。

    ** 从技术上讲,并不是同一行上的变量具有不兼容的形状。唯一的问题是当添加、相乘等的两个变量具有不兼容的形状时,这些变量是否是临时的(例如,函数输出)。只要在计算数学表达式之前有其他东西纠正问题,同一行上具有不同形状的两个变量就可以了。

    【讨论】: