字典中的 NumPy 切片表示法

2023-12-29

我想知道是否可以将 numpy 切片表示法存储在 python 字典中。就像是:

lookup = {0:[:540],
          30:[540:1080],
          60:[1080:]}

可以使用本机 python 切片语法,例如slice(0,10,2),但我无法存储更复杂的切片。例如,多维的东西[:,:2,:, :540].

我当前的工作是将值存储为元组,然后将它们解压到必要的切片中。

使用 Python 2.x 工作。


语法[:, :2, :, :540]被转换成一个元组slicePython 的对象:

(slice(None, None, None),
 slice(None, 2, None),
 slice(None, None, None),
 slice(None, 540, None))

生成此元组的一种便捷方法是使用特殊函数*np.s_ http://docs.scipy.org/doc/numpy/reference/generated/numpy.s_.html。你只需要把它传递给[...]表达。例如:

>>> np.s_[:540]
slice(None, 540, None)
>>> np.s_[:, :2, :, :540]
(slice(None, None, None),
 slice(None, 2, None),
 slice(None, None, None),
 slice(None, 540, None))

那么你的切片字典可以写成:

lookup = {0: np.s_[:540],
          30: np.s_[540:1080],
          60: np.s_[1080:]}

* 技术上s_是类的别名IndexExpression https://github.com/numpy/numpy/blob/master/numpy/lib/index_tricks.py#l603实现了一个特殊的__getitem__ method.

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

字典中的 NumPy 切片表示法 的相关文章

随机推荐