我的问题比实际问题更具体。考虑以下数组:
from numpy import zeros, ones
array1 = ones((3, 3), bool)
array1[0][0] = 0
array1[0][2] = 0
array1[2][0] = 0
array1[2][2] = 0
array2 = zeros((12, 12), bool)
现在我正在寻找一种方法,我可以引用与 array1 相同比例的 array2 的二维部分,以便我可以将 array1 的正值添加到它。我知道有一些方法可以使用循环来做到这一点,但我更喜欢有一个像 array2[(some way of getting a 3x3 part of array2)] |= array1
这样的语句最佳答案
使用 float 的示例的输出似乎更容易理解:
>>> a1 = numpy.ones((3, 3))
>>> a2 = numpy.ones((12, 12))
>>> a2[:3,:3] += a1
>>> a2
array([[ 2., 2., 2., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 2., 2., 2., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 2., 2., 2., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
此外,请注意您可以执行以下操作:
>>> a2[slice(None, a1.shape[0]), slice(None, a1.shape[1])]
array([[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.]])
关于python - 如何更改 numpy 数组的一部分的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5760862/