2016-11-09 55 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