JaxAdam
@JaxAdam
Junior Full-Stack Developer

Как сделать реверс матрицы python?

out_gray = cv2.cvtColor(output, cv2.COLOR_BGR2GRAY) # черно-белая матрица картинки type = tuple

out_gray_reverse = [] # реверсированная матрица (объявление)

for i in range(0, len(out_gray) - 1): # перебор первого уровня
    for j in range(0, len(out_gray[i]) - 1): #  перебор второго уровня
        out_gray_reverse[j][i] = out_gray[i][j]

Что должно произойти?
Вот это:
[[1,2,3],
[4,5,6],
[7,8,9]]

перевернуться в вот это:
[[1,4,7],
[2,5,8],
[3,6,9]]

Мой код сверху выдает ошибку
Traceback (most recent call last):
  File "img.py", line 64, in <module>
    out_gray_reverse[j][i] = out_gray[i][j]
IndexError: list index out of range

Матрица сверху лишь для примера. А что на самом деле: мы имеем матрицу 131х1026, а должны иметь 1026х131.
len(out_gray) # 131
len(out_gray[0]) # 1026
  • Вопрос задан
  • 786 просмотров
Решения вопроса 1
aRegius
@aRegius
Python Enthusiast
Как сделать реверс

То, что вы хотите сделать (судя по примеру), называется Транспонирование.

your_matrix.T

>>> x
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> x.T
array([[1, 4, 7],
       [2, 5, 8],
       [3, 6, 9]])
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Drill
out_gray_reverse = list(zip(*out_gray))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы