20

我正在尝试使用在变量中预定义的切片来切片 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]])

切片变量的类型对我来说并不重要,我只是以字符串为例。如何保存这样的切片说明符?

4

2 回答 2

27

您可以使用内置slice功能

s = slice(1,3)
b[s,s]

ds = (s,s)
b[ds]
于 2012-09-27T08:16:51.753 回答
15

numpy.s_numpy.index_exp提供一种方便的方法:

the_slice = numpy.index_exp[1:3, 1:3]
b[the_slice]

它们不能做任何你不能用slice、 元组、None和的组合做的事情Ellipsis,但它们允许你使用与切片数组完全相同的语法(s_和之间的唯一区别index_exp是一维切片,s_返回一个切片对象,同时index_exp将其包装在一个元组中)。

于 2012-09-27T09:29:16.793 回答