python - 字典中的 NumPy 切片表示法

标签 python python-2.7 numpy dictionary slice

我想知道是否可以在 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/

相关文章:

python - 在 Python 中读取/写入文件内容的最简单方法

django - UUIDField 没有属性 uuid4

python - 有效扩张线性回归

Python-如何将数组添加到唯一的 numpy 数组?每个数组必须代表我的 numpy 数组中的一行

python - 加快 Pandas 多级索引选择的方法?

Python Gtk 显示和隐藏图像

python - Pandas - 使用每行元素的点积创建新的 DataFrame 列

php - Python:如何在内部/localhost 发出 HTTP 请求

python - 如何有选择地转义 Python 字符串中的百分比 (%)?

python - 将对象转储到 JSON 文件的两种方法有什么区别吗?