Python:切片多维数组

2023-11-21

我知道如何切片一维序列:arr[start:end],并访问数组中的一个元素:el = arr[row][col].

现在,我正在尝试类似的事情slice = arr[0:2][0:2] (where arr是一个 numpy 数组),但它没有给我前 2 行和列,而是重复前 2 行。我刚刚做了什么?如何沿着另一个维度进行切片?


如果你使用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 数组,但与我上面发布的“本机”解决方案相比,它会很慢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:切片多维数组 的相关文章