【问题标题】:Numpy `ValueError: operands could not be broadcast together with shape ...`Numpy`ValueError:操作数无法与形状一起广播......`
【发布时间】:2012-08-05 02:08:42
【问题描述】:

我正在使用 python 2.7 并尝试预测从 1.00000000 到 3.0000000008 的一些随机数据。我的数组中有大约 196 个项目,我得到了错误

ValueError: operands could not be broadcast together with shape (2) (50)

我自己似乎无法解决这个问题。任何帮助或相关文档的链接将不胜感激。

这是我正在使用的生成此错误的代码

nsample = 50
sig = 0.25
x1 = np.linspace(0,20, nsample)
X = np.c_[x1, np.sin(x1), (x1-5)**2, np.ones(nsample)]
beta = masterAverageList
y_true = ((X, beta))
y = y_true + sig * np.random.normal(size=nsample)

【问题讨论】:

    标签: python arrays numpy array-broadcasting


    【解决方案1】:

    如果Xbeta 与最后一行右侧的第二项(即nsample)的形状不同,那么您将收到此类错误。要将数组添加到数组元组中,它们都必须是相同的形状。

    我建议查看numpy broadcasting rules

    【讨论】:

    • 如果它改变了我的数组中的任何内容,我的错误是有 168 个项目的形状当前是 (1, 168) (168, 4)。那么你的意思是两者的形状应该是相同的 (1, 168) (1, 168)?
    • 糟糕,我在发布之前编辑了我的代码。但是已将其切换回实际形状(1,168)(50,4)。 A 我应该让它们同时是 (1,168)(1,168) 或 (50,4)(50,4)?
    • 我无法真正回答您的数组应该是什么大小。它们只需要相同,以便以您尝试的方式添加它们。
    • 数据会改变,但大小不会改变,所以有没有办法照原样做?,我开始认为这个话题对于像我这样的菜鸟来说仍然有点高级; )
    猜你喜欢
    • 2020-06-20
    • 2014-08-24
    • 1970-01-01
    • 2017-09-09
    • 2012-10-31
    • 2013-04-07
    • 2018-08-18
    • 1970-01-01
    • 2018-12-26
    相关资源
    最近更新 更多