2016-11-09 54 views
0

我有問題在解釋在python的numpy的陣列,例如,蟒numpy的陣列旅遊解說

data[:,i:i+3, j:j+3] 

若設爲i = 2,J = 1,那麼這將是data[ :, 2: 5,1:4] 假設整個數據陣列看起來像這個:

data =([[ 0, 1, 2, 3, 4, 5], 
     [10, 11, 12, 13, 14, 15], 
     [20, 21, 22, 23, 24, 25], 
     [30, 31, 32, 33, 34, 35], 
     [40, 41, 42, 43, 44, 45], 
     [50, 51, 52, 53, 54, 55]]) 

那麼數組data[ :, 2: 5,1:4]是什麼樣子?我真的不明白冒號:是什麼意思,這裏的逗號,是什麼意思?

+2

您_wouldn't_切片時'data'與上面的表達式。注意傳遞了3個切片 - 每個切片對應於數組中的特定維度。由於你有2維數據,你不會傳遞3片,只有2. – mgilson

+0

[Python高級切片]可能的重複(http://stackoverflow.com/questions/38988560/python-advanced-slicing) –

+0

甚至基本索引; ':'用於列表索引; ''''是'numpy'中索引多維的基礎。 – hpaulj

回答

0

這裏的一個使用索引圖案的:

製作一個3D陣列,具有形狀大到足以容納該索引;

In [568]: data=np.arange(2*6*5).reshape(2,6,5) 
In [569]: data[:, 2:5, 1:4] 
Out[569]: 
array([[[11, 12, 13], 
     [16, 17, 18], 
     [21, 22, 23]], 

     [[41, 42, 43], 
     [46, 47, 48], 
     [51, 52, 53]]]) 

結果是(2,3,3)數組。如果我們將3d數組視爲具有平面,行和列,則將返回所有平面,3行和3列。這可能有助於打印出data並確定已選擇的元素。我讓他們獨一無二,讓這更容易。

這是基本的索引的一個例子(所有索引詞是切片):

https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#basic-slicing-and-indexing