是否可以使用 numpy.ndarray 将一个二维数组的子区域复制到另一个
Is it possible to Copy Subregion of One 2D Array to Another Using numpy.ndarray
我有一些使用 numpy 的二维数组,我想将子区域从一个数组复制到另一个数组。例如,如果我开始于:
dest = numpy.zeros((4, 4))
# array([[0., 0., 0., 0.],
# [0., 0., 0., 0.],
# [0., 0., 0., 0.],
# [0., 0., 0., 0.]])
src = numpy.ones((4, 4))
# array([[1., 1., 1., 1.],
# [1., 1., 1., 1.],
# [1., 1., 1., 1.],
# [1., 1., 1., 1.]])
我想以某种方式说 src
应该被复制到 dest
的 (2,1)
,这样源代码看起来像:
array([[0., 0., 0., 0.],
[0., 0., 1., 1.],
[0., 0., 1., 1.],
[0., 0., 1., 1.]])
或者如果(-3, 0)
,那么:
array([[1., 0., 0., 0.],
[1., 0., 0., 0.],
[1., 0., 0., 0.],
[1., 0., 0., 0.]])
我可以使用老式的双索引循环来做到这一点,但我希望 numpy 有一些聪明的魔法来做到这一点。我查看了 take
,但看不出如何将其作为这项工作的工具。
这两个都可以通过 numpy
索引来完成。要了解其工作原理,documentation is always your friend.
您的第一个案例:
dest[1: ,2:] = src[1: ,2:]
array([[0., 0., 0., 0.],
[0., 0., 1., 1.],
[0., 0., 1., 1.],
[0., 0., 1., 1.]])
您的第二种情况:(您指定了第 -3 列,但您的结果显示为 -4)
dest[:, -4] = src[:, -4]
array([[1., 0., 0., 0.],
[1., 0., 0., 0.],
[1., 0., 0., 0.],
[1., 0., 0., 0.]])
我有一些使用 numpy 的二维数组,我想将子区域从一个数组复制到另一个数组。例如,如果我开始于:
dest = numpy.zeros((4, 4))
# array([[0., 0., 0., 0.],
# [0., 0., 0., 0.],
# [0., 0., 0., 0.],
# [0., 0., 0., 0.]])
src = numpy.ones((4, 4))
# array([[1., 1., 1., 1.],
# [1., 1., 1., 1.],
# [1., 1., 1., 1.],
# [1., 1., 1., 1.]])
我想以某种方式说 src
应该被复制到 dest
的 (2,1)
,这样源代码看起来像:
array([[0., 0., 0., 0.],
[0., 0., 1., 1.],
[0., 0., 1., 1.],
[0., 0., 1., 1.]])
或者如果(-3, 0)
,那么:
array([[1., 0., 0., 0.],
[1., 0., 0., 0.],
[1., 0., 0., 0.],
[1., 0., 0., 0.]])
我可以使用老式的双索引循环来做到这一点,但我希望 numpy 有一些聪明的魔法来做到这一点。我查看了 take
,但看不出如何将其作为这项工作的工具。
这两个都可以通过 numpy
索引来完成。要了解其工作原理,documentation is always your friend.
您的第一个案例:
dest[1: ,2:] = src[1: ,2:]
array([[0., 0., 0., 0.],
[0., 0., 1., 1.],
[0., 0., 1., 1.],
[0., 0., 1., 1.]])
您的第二种情况:(您指定了第 -3 列,但您的结果显示为 -4)
dest[:, -4] = src[:, -4]
array([[1., 0., 0., 0.],
[1., 0., 0., 0.],
[1., 0., 0., 0.],
[1., 0., 0., 0.]])