2016-11-09 3 views
0

У меня есть проблема в интерпретации Numpy массива в Python, например,питон NumPy массив intepretation

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

если я = 2, у = 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 advanced slicing] (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