有没有更好的方法索引此数组?

时间:2019-05-15 13:48:03

标签: python arrays numpy

我们收到了代码;

import numpy as np
a = np.transpose(np.diag(np.arange(2,8)) + 10*np.ones((1,6)) - np.arange(10, 4, -1))
*_____*=np.eye(2)

,并要求填写 _____ ,以便打印出的数组为

[[ 2.  0.  0.  0.  0.  0.]
 [ 1.  4.  1.  1.  1.  1.]
 [ 2.  2.  6.  2.  2.  2.]
 [ 1.  3.  3.  0.  3.  3.]
 [ 4.  4.  4.  4. 10.  4.]
 [ 0.  5.  5.  1.  5. 12.]]

我尝试将以下内容放入;

a[3,[0,3]],a[5,[0,3]]

当我将其放入python时,它给出了正确的数组,但是当我将其填充到网站中时,它告诉我这是不正确的。

我想知道是否有一种更整洁或更有效的方法来索引数组,因为这可能是预期的解决方案。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式获得所需的结果:

a[3::2, ::3] = np.eye(2)

请参阅:

import numpy as np

a = np.transpose(np.diag(np.arange(2, 8)) + 10*np.ones((1, 6)) - np.arange(10, 4, -1))
a[3::2, ::3] = np.eye(2)
print(a)
# [[ 2.  0.  0.  0.  0.  0.]
#  [ 1.  4.  1.  1.  1.  1.]
#  [ 2.  2.  6.  2.  2.  2.]
#  [ 1.  3.  3.  0.  3.  3.]
#  [ 4.  4.  4.  4. 10.  4.]
#  [ 0.  5.  5.  1.  5. 12.]]