2012-09-27 96 views
6

我想切片使用在變量中預定義的切片的numpy數組。這工作: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]]) 

這對我並不重要切片變量有什麼類型的,我只是用一個字符串作爲一個例子。我如何保存這樣的分片說明符?

回答

13

您可以使用內置的slice功能

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

ds = (s,s) 
b[ds] 
+0

完美。我一直在看切片函數,但顯然不夠緊密:-)謝謝(只要定時器允許,我會接受)。 – XerXes

7

numpy.s_ and numpy.index_exp提供這樣的方便的方法:

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

他們不能做任何事情,你不能用做slice,元組,NoneEllipsis的組合,但它們允許您使用與用於切片數組完全相同的語法(s_和之間的唯一區別是對於一維片,s_返回片對象,而index_exp將其包裝在一個元組中)。