来自变量的 Numpy 切片
Posted
技术标签:
【中文标题】来自变量的 Numpy 切片【英文标题】:Numpy slicing from variable 【发布时间】:2012-09-18 23:16:35 【问题描述】:我正在尝试使用在变量中预定义的切片来切片 numpy 数组。这有效:
b = fromfunction(lambda x,y: 10*x+y, (5,4),dtype=int) # Just some matrix
b[1:3,1:3]
# Output:
# array([[11, 12],
# [21, 22]])
但我想做的是这样的:
slice = "1:3,1:3"
b[slice]
# Output:
# array([[11, 12],
# [21, 22]])
切片变量的类型对我来说并不重要,我只是以字符串为例。如何保存这样的切片说明符?
【问题讨论】:
【参考方案1】:可以使用内置的slice
函数
s = slice(1,3)
b[s,s]
ds = (s,s)
b[ds]
【讨论】:
【参考方案2】:numpy.s_
and numpy.index_exp
提供了一种方便的方法:
the_slice = numpy.index_exp[1:3, 1:3]
b[the_slice]
它们不能做任何你不能用 slice
、元组、None
和 Ellipsis
的组合做的事情,但它们允许你使用与切片完全相同的语法一个数组(s_
和index_exp
之间的唯一区别是对于一维切片,s_
返回一个切片对象,而index_exp
将其包装在一个元组中)。
【讨论】:
以上是关于来自变量的 Numpy 切片的主要内容,如果未能解决你的问题,请参考以下文章