【问题标题】:ValueError: could not broadcast input array from shape (6) into shape (1)ValueError:无法将输入数组从形状 (6) 广播到形状 (1)
【发布时间】:2019-05-08 20:41:58
【问题描述】:

我制作了一个常量值向量。向量是(1 行,6 列)。然后,我在另一个函数中调用向量,我想使用向量的每个元素进行其他计算。问题是我收到以下错误:

ValueError: 无法将输入数组从形状 (6) 广播到形状 (1)

为什么?有没有人可以帮助我? 最好的问候,

n=6
F = np.ones([1,n])  
F = F*0.4

# F: [[0.4 0.4 0.4 0.4 0.4 0.4]] 
# Other function
str=np.zeros([1,n])
for i in range(0, len(F)):
    str[i] = 1000 * F[i]

# ValueError: could not broadcast input array from shape (6) into shape (1)

【问题讨论】:

    标签: python


    【解决方案1】:

    您的F 不是值列表,而是一个值列表的列表。我可以通过围绕您的价值观的额外[] 看到这一点。因此,当您进行计算 str[i] = 1000 * F[i] 时,您正在使用 2 个列表。您可以尝试用 str[0][i] = 1000 * F[0][i] 替换该行以访问外部列表的第 0 个元素(这只是值列表),然后从该列表中选择第 i 个值。

    这可能不是您正在寻找的答案,可以帮助获得好的答案是发布完整的回溯。很可能您的错误消息比一行ValueError 更多,在您的问题中发布的额外信息将非常有用!您还可以添加任何 Fd_ULS 的定义。

    【讨论】:

    • 您好,谢谢您的宝贵回答。 Fd_ULS 是 F,抱歉我忘记改了。将 F 定义为一个列表是否可行?特别是,我会将 F 定义为在 for 循环中修改 sintax 的法线向量?谢谢
    • 您好,再次感谢您的宝贵意见。我以不同的方式定义 F。
    • for i in range(0,n): F[i]=0.4
    • Numpy 通常用于 2D 矩阵,当您将 [1,n] 传递给您的函数调用 F = np.ones([1,n]) 时,您是在告诉 numpy 用 1 构建一个 1xn 矩阵。你只想要一个一维数组出来,所以你只需要 1 个参数:F = np.ones(n) 会给你你想要的。
    猜你喜欢
    • 1970-01-01
    • 2020-01-11
    • 2018-06-30
    • 2018-06-08
    • 2020-01-21
    • 2020-10-18
    • 2018-09-25
    • 2018-04-21
    • 2020-10-09
    相关资源
    最近更新 更多