Numpy数组和更改值区域

时间:2012-10-21 18:32:37

标签: python numpy

我正在寻找替换数组中的区域,例如我创建了一个数组b = numpy.zeros((12,12))。我想在a=numpy.aray([[1,2],[2,3]])索引的左上角用[0:1,0:1]更改其值。

当我指定b[0:1,0:1] = a时出现错误:

"ValueError: output operand requires a reduction, but reduction is not enabled".

做这种事的方法是什么?

由于

1 个答案:

答案 0 :(得分:5)

使用正确的索引:

>>> b[0:2,0:2] = a
>>> b
array([[ 1.,  2.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 2.,  3.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

来自the docs

  

记住切片如何工作的一种方法是将索引视为   指向字符之间,与第一个字符的左边缘   编号为0.然后是n个字符串的最后一个字符的右边缘   字符具有索引n,例如:

 +---+---+---+---+---+
 | H | e | l | p | A |
 +---+---+---+---+---+
 0   1   2   3   4   5
-5  -4  -3  -2  -1