首页 > 解决方案 > 如何使用二维数组进行索引?

问题描述

有人可以向我解释一下 numpy 索引如何用于二维数组。我发现很难缠住我的头。

具体来说,如果我创建一个 2d 8x8 数组,在这种情况下每个值代表什么:

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

标签: pythonnumpymultidimensional-array

解决方案


在您的数组中:

  • 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]])

推荐阅读