是否可以使用numpy.ndarray公司

2024-04-23 12:08:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些使用numpy的2d数组,我想将子区域从一个复制到另一个。例如,如果我从以下内容开始:

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,但看不出如何使它成为这项工作的工具。你知道吗


Tags: 工具srcnumpy区域源代码魔法oneszeros
1条回答
网友
1楼 · 发布于 2024-04-23 12:08:48

这两个都可以通过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.]])

相关问题 更多 >