Чтобы проиллюстрировать исследование slice
в интерактивном сеансе:
In [216]: slice(None)
Out[216]: slice(None, None, None)
In [217]: slice??
Init signature: slice(self, /, *args, **kwargs)
Docstring:
slice(stop)
slice(start, stop[, step])
Create a slice object. This is used for extended slicing (e.g. a[0:10:2]).
Type: type
Subclasses:
In [218]: np.s_[:]
Out[218]: slice(None, None, None)
Я не смотрел на код np.trapz
, но я знаю, что другие функции numpy
часто создают индексные кортежи, когда онидолжен быть axis
общим.
Например, обобщенная индексация трехмерного массива:
In [221]: arr = np.arange(24).reshape(2,3,4)
In [223]: idx = [slice(None) for _ in range(3)]
In [224]: idx
Out[224]: [slice(None, None, None), slice(None, None, None), slice(None, None, None)]
In [225]: idx[1]=1
In [226]: idx
Out[226]: [slice(None, None, None), 1, slice(None, None, None)]
In [227]: tuple(idx)
Out[227]: (slice(None, None, None), 1, slice(None, None, None))
In [228]: arr[tuple(idx)] # arr[:,1,:]
Out[228]:
array([[ 4, 5, 6, 7],
[16, 17, 18, 19]])
In [229]: idx[2]=2
In [230]: arr[tuple(idx)] # arr[:,1,2]
Out[230]: array([ 6, 18])