2015-08-22 3 views
-6

Я переключаюсь с Matlab/octve на Numpy/Scipy.Как эффективно выбрать часть массива NumPy?

Чтобы выбрать сегмент массива Matlab, это было довольно просто. , например.

>> x = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12] 
x = 

    1  2  3  4 
    5  6  7  8 
    9 10 11 12 

>> y = x(2:3, 1:2) 

y = 

    5  6 
    9 10 

Как то же самое можно сделать с NumPy когда

x = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) 
+1

Вы можете начать с просмотра документации numpy по индексированию массива [в частности, раздела индексации фрагментов] (http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#basic -slicing-и индексации) –

ответ

1

Как Indexing > Other indexing options в документации NumPy упоминает,

нарезании и шагающие работает точно так же, как это делает для списки и кортежи, за исключением того, что они могут применяться и к нескольким измерениям.

Для примера, это означает, что

import numpy as np 
x = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) 
# array([[ 1, 2, 3, 4], 
#  [ 5, 6, 7, 8], 
#  [ 9, 10, 11, 12]]) 

x[1:3, 0:2] 
# => array([[ 5, 6], 
#   [ 9, 10]]) 

Наиболее заметное различие в Matlab, вероятно, что индексация начинается с нуля (т.е. первый элемент имеет индекс 0), и что диапазоны индексов (так называемые «срезы» в Python) выражаются с исключительной верхней границей: l[4:7] получает l[4], l[5] и l[6] (от 3-го по 7-й элемент), но не l[7] (8-й элемент).

Python tutorial's section on lists даст вам представление о том, как индексирование и нарезка работают для обычных (одномерных) коллекций.

Смежные вопросы