如何提供用于切片 numpy 数组的语法糖?



我想通过执行以下操作来编写更具可读性的代码:

import numpy as np
SLICE_XY = slice(0, 2)
SLICE_Z = slice(2, 3)
data = np.array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[9, 10, 11]])
xy = data[:, SLICE_XY]
z = data[:, SLICE_Z]

但是,我遇到了执行上述操作会产生的问题

>>> xy
array([[ 0,  1],
[ 3,  4],
[ 6,  7],
[ 9, 10]])
>>> z
array([[ 2],
[ 5],
[ 8],
[11]])

这是我对xy的期望.但对于z,我希望它相当于

>>> data[:, 2]
array([ 2,  5,  8, 11])

注意:

>>> data[:, 0:2]
array([[ 0,  1],
[ 3,  4],
[ 6,  7],
[ 9, 10]])
SLICE_Z = 2

根据设计,arr[0:1] 与 arr[0] 不同。切片始终返回可迭代对象。

最新更新