我在 python 列表中有一堆 numpy 数组lst
。我可以对这些数组之一进行切片,通过使用以下命令对其进行索引来获取特定视图[:, 1]
, 例如。
我需要将此切片操作应用于所有 numpy 数组lst
。使用生成器理解,我可以这样做:
(my_array[:, 1] for my_array in lst)
我想知道是否有办法完成同样的事情operator.itemgetter
and map
.
map(operator.itemgetter(:, 1), lst)
不出所料,会导致语法错误。
切片语法生成slice
为您提供的对象。您必须显式创建它们才能传递给itemgetter
. Since itemgetter(x,y)(a)
相当于(a[x], a[y])
,您还需要使用括号来确保传递单个tuple
由你的slice
和int
index.
# [:] -> slice(None)
map(operator.itemgetter((slice(None), 1)), lst)
弄清楚切片语法到底做什么的一个有用工具是定义一个小类
class A:
def __getitem__(self, key):
print(key)
然后你可以进行快速检查,例如
>>> A()[:,1]
(slice(None, None, None), 1)
(slice(None)
是缩写slice(None, None, None)
.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)