我是Python和numpy的新手。我已经弄清楚如何对一维序列进行切片:arr[start:end],并访问数组中的元素:el = arr[row][col]。
arr[start:end]
el = arr[row][col]
尝试类似slice = arr[0:2][0:2](arrnumpy数组在哪里)的操作不会给我前两行和一列,而是会重复前两行。我刚才做了什么,以及如何沿着另一个维度进行切片?
slice = arr[0:2][0:2]
arr
如果使用numpy,这很容易:
numpy
slice = arr[:2,:2]
或者如果您想要0,
slice = arr[0:2,0:2]
您将得到相同的结果。
*请注意,这slice实际上是内置类型的名称。通常,我建议给您的对象一个不同的“名称”。
slice
换句话说,如果要使用列表列表*:
slice = [arr[i][0:2] for i in range(0,2)]
(请注意,此处的0不必要: [arr[i][:2] for i in range(2)]也可以使用。)。
[arr[i][:2] for i in range(2)]
我在这里所做的是,一次获取了每个所需的行1(arr[i])。然后,从该行中切出想要的列,并将其添加到我正在构建的列表中。
arr[i]
如果您天真地尝试:arr[0:2]您将获得前两行,如果再对它们进行切片arr[0:2][0:2],则只需将前两行切片。
arr[0:2]
arr[0:2][0:2]
*这实际上也适用于numpy数组,但是与我上面发布的“本机”解决方案相比,它的速度较慢。