Python:切片多维数组

时间:2013-06-24 13:47:24

标签: python arrays numpy

我是Python和numpy的新手。我已经弄清楚如何切割1维序列:arr[start:end],并访问数组中的元素:el = arr[row][col]

尝试类似slice = arr[0:2][0:2](其中arr是一个numpy数组)并没有给我前两行和列,但重复前两行。我刚才做了什么,以及如何沿着另一个维度切片?

1 个答案:

答案 0 :(得分:54)

如果您使用numpy,这很容易:

slice = arr[:2,:2]

或者如果你想要0,

slice = arr[0:2,0:2]

你会得到相同的结果。

*请注意slice实际上是内置类型的名称。一般来说,我建议给你的对象一个不同的“名字”。


另一种方式,如果你正在使用列表列表*:

slice = [arr[i][0:2] for i in range(0,2)]

(注意这里的0是不必要的:[arr[i][:2] for i in range(2)]也可以。)。

我在这里做的是我每次获取每个所需的第1行(arr[i])。然后我将我想要的列切出该行,并将其添加到我正在构建的列表中。

如果你天真地尝试:arr[0:2]你获得前两行,如果你再次切片arr[0:2][0:2],你只需要再切两行。

*这实际上也适用于numpy数组,但与我上面发布的“原生”解决方案相比,它会很慢。

相关问题