2017-02-04 3 views
1

Say x является 3x3 NumPy массивом, который содержит следующее:NumPy расширенных индексаций на многомерном массиве

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

есть некоторые индексации, которые могут дать мне следующую подмассив:

array([[ 1., 2.], 
     [ 5., 6.]]) 
+1

Пытались ли вы что-нибудь? – Sid

+0

Да, такие вещи, как 'x [(0,2), 0: 2]', но безрезультатно. Я не мог получить подмножества, подобные тому, что я упомянул. –

ответ

4

Вы можете использовать integer array indexing с кортежем массивов:

>>> rows = np.array([[0, 0], 
...     [1, 1]], dtype=np.intp) 
>>> columns = np.array([[0, 1], 
...      [1, 2]], dtype=np.intp) 
>>> x[rows, columns] 
array([[ 1., 2.], 
     [ 5., 6.]]) 
+0

Спасибо, на самом деле, исходя из вашего предложения, похоже, что работает следующее (я ищу однострочный): 'x [[[0, 0], [1, 1]], [[0, 1] , [1, 2]]] ' –

+0

хорошо, я не знал, что вы ищете короткий код, поэтому я решил показать явный. Немного яснее, что представляют строки и каковы столбцы. :) – MSeifert

-3

вы можете использовать

x[:2,:2] 

, чтобы решить вашу проблему

+1

Это не работающее решение. – MaLiN2223

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