如何通过二维数组索引使用?



谁能给我解释一下numpy索引是如何为二维数组工作的?我觉得很难理解。

具体来说,如果我创建一个2d的8x8数组,在这个实例中每个值代表什么:

array[x:y:i, t:n:m]

在你的数组中:

  • xt是片的开始;
  • yt为切片末端;
  • im是切片的步骤。

例如,让我们定义一个8x8的数组:

z=[[x*y+x+y for x in range(8)] for y in range(8)]
z=np.asarray(z)
Out[1]:
array([[ 0,  1,  2,  3,  4,  5,  6,  7],
[ 1,  3,  5,  7,  9, 11, 13, 15],
[ 2,  5,  8, 11, 14, 17, 20, 23],
[ 3,  7, 11, 15, 19, 23, 27, 31],
[ 4,  9, 14, 19, 24, 29, 34, 39],
[ 5, 11, 17, 23, 29, 35, 41, 47],
[ 6, 13, 20, 27, 34, 41, 48, 55],
[ 7, 15, 23, 31, 39, 47, 55, 63]])
z.shape
Out[2]: (8, 8)

从第0行到第3行(不包括它)每2行,索引如下:

z[0:3:2]
Out[3]: 
array([[ 0,  1,  2,  3,  4,  5,  6,  7],
[ 2,  5,  8, 11, 14, 17, 20, 23]])

列:

z[:,1:6:3]
Out[4]: 
array([[ 1,  4],
[ 3,  9],
[ 5, 14],
[ 7, 19],
[ 9, 24],
[11, 29],
[13, 34],
[15, 39]])

合并行和列:

z[0:3:2, 0:3:2]
Out[5]: 
array([[0, 2],
[2, 8]])

最新更新