#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
oflists
, а не 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
для каждой строки и столбца.
Это то, что вы ищете? Пожалуйста, дайте мне знать.