【问题标题】:How to copy consecutive values to an array如何将连续值复制到数组
【发布时间】:2023-03-11 21:13:01
【问题描述】:
copyto = zeros(10)
what = ones(3)
where = 2
copyto[where:len(what)+where] = what

有没有办法将较小数组中的所有值复制到特定位置的较大数组中,而不提供上索引?我认为它会起作用的方式是

copyto[where:] = what

但这给了我

ValueError: operands could not be broadcast together with shapes

谢谢!

【问题讨论】:

    标签: arrays numpy replace indexing copy


    【解决方案1】:

    在赋值的左侧和右侧,您必须有具有相同形状的数组,以便各个元素之间存在一对一的对应关系。在您的情况下,数组(视图)copyto[where:] 有 8 个元素,而 what 有 3 个元素,因此您的分配没有明确定义。 (或者换一种说法:没有唯一的方法可以将三个值分配给八个变量,因此分配定义不明确。)

    【讨论】:

    • 我想你误解了我的意思。我正在寻找一个表达式,它将what 中的所有项目以连续顺序在位置where 处分配给“copyto”。非常类似于较长的表达式所做的,但不需要指定上索引。
    • 但是没有更简单的方法。如上所述,您必须在分配的两侧具有相同的形状,因此您必须在示例中指定上索引。
    • 我发布问题,寻找替代方法。 “没有其他方法”不是一个有用的答案。此外,问题并没有像您所说的那样定义错误(虽然给定的陈述是,但它只是作为一个例子来说明我在寻找什么)。
    • 当然,你可以不喜欢它,因为它没有给你“另一种方式”。或者,您可以接受 Python 和 Numpy 不是您发明/开发的事实,因此可能与您对此类构造的看法不同。您甚至可以尝试了解它未按您预期的方式完成的原因。这正是我的帖子想要有用的地方,仅此而已。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 2021-02-21
    • 2011-07-12
    • 2017-04-05
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多