2013-03-01 39 views
2
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 

谢谢!

回答

2

在作业的左侧和右侧,您必须具有相同形状的数组,以便各个元素之间存在一对一的对应关系。在你的情况下,数组(查看)copyto[where:]有8个元素,而what有3个,所以你的任务没有很好的定义。 (或者换句话说:没有独特的方法可以为八个变量赋值三个值,因此赋值是不确定的。)

+0

我想你误解了我。我正在寻找一个表达式,它将'what'中的所有项目以'where'的顺序连续排列。非常类似于较长的表达式,但不需要指定较高的索引。 – 2013-03-01 19:54:36

+2

但没有简单的方法。如上所述,您必须在赋值的两侧都具有相同的形状,因此您必须在示例中指定较高的索引。 – 2013-03-01 20:00:42

+0

我发布了问题,寻找替代方法。 “没有别的办法”不是一个有用的答案。除此之外,问题并没有像你陈述的那样不明确(尽管给定的陈述是,但它只是作为一个例子来显示我在找什么)。 – 2013-03-04 14:34:09