是否可以通过另一个二维数组逐行索引二维数组而无需在 NumPy 中循环?

假设我有带索引的 NumPy 数组:

array([[1, 3],
       [2, 5]])

另外,我有带零的 NumPy 数组:

array([[0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0.]])

我需要从带有索引的数组中取出第一行,并在数组的第一行中为这些索引设置 1 为零。此后第一行必须看起来像[0, 1, 0, 1, 0, 0].

然后我还需要为数组中的第二行做零,并分别使用数组中的第二行和索引。在这之后的第二行必须看起来像[0, 0, 1, 0, 0, 1].

所以,我想得到这样的数组:

array([[0, 1, 0, 1, 0, 0],
       [0, 0, 1, 0, 0, 1]])

我怎么能在没有任何循环的情况下做到这一点?

回答

给定索引数组i和目标数组x

>>> i = np.array([[1, 3],
[2, 5]])
>>> x = np.array([[0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0.]])

你可以使用np.put_along_axis

>>> np.put_along_axis(x, i, values=1, axis=1)
>>> x
array([[0., 1., 0., 1., 0., 0.],
[0., 0., 1., 0., 0., 1.]])

以上是是否可以通过另一个二维数组逐行索引二维数组而无需在 NumPy 中循环?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>