gpt4 book ai didi

python - 一个对象中的多维数组切片

转载 作者:行者123 更新时间:2023-12-05 04:08:09 24 4
gpt4 key购买 nike

我有一个 numpy 数组:

arr = numpy.arange(25 * 10 * 20)
arr.resize((25, 10, 20))

我想得到这样的切片:

arr[3:6, 2:8, 7:9]

这个有效:

index = [slice(3, 6), slice(2, 8), slice(7, 9)]
arr[index]

但这不是:

>>> index = slice([3, 2, 7], [6, 8, 9])
>>> arr[index]
TypeError: slice indices must be integers or None or have an __index__ method

可以通过一个 slice 对象来完成吗?或者只有 3 个 slicelist 可以工作?

最佳答案

>>> help(slice)
class slice(object)
| slice(stop)
| slice(start, stop[, step])

所以我们使用 slice(start, stop, step)

>>> import numpy as np
>>> x = np.arange(10)

## ERROR

>>> i=slice([1,3])
>>> x[i]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: slice indices must be integers or None or have an __index__ method

## OK

>>> i = slice(3,7,2)
>>> print(x)
[0 1 2 3 4 5 6 7 8 9]
>>> print(i)
slice(3, 7, 2)
>>> print(x[i])
[3 5]

对于多维:

>>> x = np.arange(12).reshape(3,4)
>>> x
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> i = slice(0,3,1)
>>> i
slice(0, 2, 1)
>>> x[i,i]
array([[0, 1],
[4, 5]])

关于python - 一个对象中的多维数组切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47904544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com