python: извлечение подматриц из индексов

#python #indexing

#python #индексирование

Вопрос:

У меня есть матрица и список индексов для обоих измерений.

 A = [[1,2,3],[4,5,6],[7,8,9]]
idx = [1,3,4]
idy = [2,5,7]
  

Какая аналогичная нотация из Matlab выполняет A (idx, idy) в Python?

Комментарии:

1. У вас есть list of lists , а не matrix. Вам нужно numpy.array(A) , но оба набора индексов превышают обе оси.

2. Простого способа доступа к столбцам не существует. Вы могли бы получить доступ к строке i в матрице как row=A[i] . Для индексирования столбцов потребуется, например, выражение генератора Python.

Ответ №1:

Вот мой пример:

 A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

idx = [0, 1]
idy = [1, 2]

a = [[A[ix][iy] for iy in idy] for ix in idx]
print(a)
  

От:

 [
   [1, 2, 3], 
   [4, 5, 6], 
   [7, 8, 9]
]
  

Я получаю подматрицу в соответствии с моими индексами idx и idy :

 [
    [2, 3], 
    [5, 6]
]
  

Пожалуйста, имейте в виду, что в python индексирование начинается с 0 so, учитывая тот факт, что здесь у нас есть матрица 3×3, наименьший индекс равен 0 , а наибольший — 2 для каждой строки и столбца.

Это то, что вы ищете? Пожалуйста, дайте мне знать.