我想知道是否可以在 python 字典中存储 numpy 切片符号。像这样的东西:
lookup = {0:[:540],
30:[540:1080],
60:[1080:]}
可以使用 native python 切片语法,例如slice(0,10,2)
,但我无法存储更复杂的切片。例如,多维 [:,:2,:, :540]
。
我目前的解决方法是将值存储为元组,然后将它们解压到必要的切片中。
在 Python 2.x 中工作。
最佳答案
Python 将语法 [:, :2, :, :540]
转换为 slice
对象的元组:
(slice(None, None, None),
slice(None, 2, None),
slice(None, None, None),
slice(None, 540, None))
生成此元组的一种便捷方法是使用特殊函数* 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))
那么你的切片字典可以写成:
lookup = {0: np.s_[:540],
30: np.s_[540:1080],
60: np.s_[1080:]}
* 技术上 s_
是类 IndexExpression
的别名它实现了一个特殊的 __getitem__
方法。
关于python - 字典中的 NumPy 切片表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30244731/