Numpy从变量切片

Xer*_*Xes 10 python numpy slice

我正在尝试使用在变量中预定义的切片来切割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]])
Run Code Online (Sandbox Code Playgroud)

但我想做的是这样的事情:

slice = "1:3,1:3"
b[slice]
# Output:
# array([[11, 12],
#       [21, 22]])
Run Code Online (Sandbox Code Playgroud)

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

Pie*_* GM 21

您可以使用内置slice功能

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

ds = (s,s)
b[ds]
Run Code Online (Sandbox Code Playgroud)


Jam*_*mes 11

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

the_slice = numpy.index_exp[1:3, 1:3]
b[the_slice]
Run Code Online (Sandbox Code Playgroud)

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