字典中的NumPy切片表示法

Jzl*_*325 7 python dictionary numpy slice python-2.7

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

lookup = {0:[:540],
          30:[540:1080],
          60:[1080:]}
Run Code Online (Sandbox Code Playgroud)

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

我目前的工作是将值存储为元组,然后将这些值解压缩到必要的切片中.

使用Python 2.x.

Ale*_*ley 9

Python 将语法[:, :2, :, :540]转换为slice对象元组:

(slice(None, None, None),
 slice(None, 2, None),
 slice(None, None, None),
 slice(None, 540, None))
Run Code Online (Sandbox Code Playgroud)

生成此元组的便捷方法是使用特殊函数*np.s_.你只需要传递[...]表达式.例如:

>>> 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))
Run Code Online (Sandbox Code Playgroud)

然后你的切片字典可以写成:

lookup = {0: np.s_[:540],
          30: np.s_[540:1080],
          60: np.s_[1080:]}
Run Code Online (Sandbox Code Playgroud)

*技术上s_IndexExpression实现特殊__getitem__方法的类的别名.