Как из списка списков получить такой результат?
Чтобы получить транспонированную матрицу из списка списков, необходимо использовать функцию zip() в сочетании с оператором * для распаковки списков. Вот как это можно сделать:
lst = [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']] result = [list(x) for x in zip(*lst)]
В результате вы получите список списков, где каждый вложенный список представляет собой строку транспонированной матрицы.
Чтобы вывести элементы этой матрицы в виде таблицы, можно использовать циклы, например так:
for row in result: print(' '.join(row))
Этот код выведет элементы матрицы в виде таблицы, где каждая строка будет расположена в новой строке, а элементы будут разделены пробелами.
Ответ написан 24 февр.
Комментировать
Нравится Комментировать

Как вариант
list_of_lists = [['1', '2', '3'],['4', '5', '6'],['7', '8', '9']] # обход элементов каждого вложенного списка и сохранение их в новый список new_list = [] for i in range(len(list_of_lists[0])): for lst in list_of_lists: new_list.append(lst[i]) # транспонирование списка списков transposed_list = list(zip(*list_of_lists)) # преобразование каждого кортежа в строку и объединение элементов с помощью пробела result = '\n'.join([' '.join(t) for t in transposed_list]) print(result)
Ответ написан 24 февр.
Комментировать
Нравится Комментировать
lst = [['1', '2', '3'],['4', '5', '6'],['7', '8', '9']] new_lst = [] for i in range(len(lst[0])): temp = [] for j in range(len(lst)): temp.append(lst[j][i]) new_lst.append(temp) for row in new_lst: print(' '.join(row))
Ответ написан 24 февр.
Комментировать
Нравится Комментировать
Нужно поменять местами все элементы матрицы, кроме главной диагонали. То есть, нужно создать цикл, который повторяется столько раз, сколько элементов находится по одну сторону от главной диагонали (не включая ее).
Вот мой вариант:
lst = [['1', '2', '3'],['4', '5', '6'],['7', '8', '9']] for i in range(len(lst)): for j in range(i): lst[i][j], lst[j][i] = lst[j][i], lst[i][j] for row in lst: print(*row)
Ответ написан 24 февр.
Комментировать
Нравится Комментировать
print(list[1][1])
Ответ написан 04 мар.
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Python
Как ввести длинный поток байтов?
- 1 подписчик
- 38 минут назад
- 23 просмотра

- Python
- +1 ещё
Как сделать программу для удаленного доступа?
- 2 подписчика
- 52 минуты назад
- 46 просмотров
Транспонирование и умножение матриц на Python
В этом уроке мы напишем программы на Python для транспонирования и умножения матриц и вывода результатов.
Прежде чем писать программу транспонирования матрицы на Python, давайте сначала посмотрим на обзор транспонирования.
Транспонирование матрицы
Если вы заменяете строки матрицы столбцом той же матрицы, это называется транспонированием матрицы. Обозначается как X’. Например: Элемент в i-й строке и j-м столбце в X будет помещен в j-ю строку и i-й столбец в X’.
Пример: Предположим, мы взяли следующую матрицу A:
A = [[5, 4, 3] [2, 4, 6] [4, 7, 9] [8, 1, 3]]
At будет транспонированием указанной выше матрицы, т. е. A [i] [j] = At [j] [i], и поэтому At должно быть:
В = [5, 2, 4, 8] [4, 4, 7, 1] [3, 6, 9, 3]
Программа Python для транспонирования матрицы
Теперь мы напишем программу на Python для транспонирования входной заданной матрицы, где мы выполняем операцию, как мы выполнили в приведенном выше примере. Чтобы выполнить операцию транспонирования матрицы, мы будем использовать метод вложенного цикла for.
Давайте разберемся с использованием и реализацией этого метода на следующем примере.
# Define a matrix A A = [[5, 4, 3], [2, 4, 6], [4, 7, 9], [8, 1, 3]] # Define an empty matrix of reverse order transResult = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] # Use nested for loop on matrix A for a in range(len(A)): for b in range(len(A[0])): transResult[b][a] = A[a][b] # store transpose result on empty matrix # Printing result in the output print("The transpose of matrix A is: ") for res in transResult: print(res)
The transpose of matrix A is: [5, 2, 4, 8] [4, 4, 7, 1] [3, 6, 9, 3]
Умножение матриц
В этом разделе мы напишем программу на Python для умножения двух входных матриц и выведем результат на выходе. Эта программа укажет, как умножать две матрицы, имеющие определенные значения.
Прежде чем писать программу на Python, давайте сначала посмотрим на обзор умножения двух матриц.
Умножение матриц — это бинарная операция, в которой используется пара матриц для создания другой матрицы. Элементы в матрице умножаются в соответствии с элементарной арифметикой.
При умножении двух матриц элементы строки первой матрицы умножаются на элементы столбца второй матрицы.
Пример: предположим, что мы взяли следующие две матрицы A и B:
A = [[5, 4, 3] [2, 4, 6] [4, 7, 9]] and, B = [[3, 2, 4] [4, 3, 6] [2, 7, 5]]
C будет объединением двух указанных выше матриц, т. е. C = A + B, и поэтому C должно быть:
C = [[37, 43, 59] [34, 58, 62] [58, 92, 103]]
Как мы видим, результирующая матрица C, также известная как произведение матриц, имеет то же количество строк, что и первая матрица (матрица A), и такое же количество столбцов, как и вторая матрица (матрица B). Мы также знаем этот тип умножения матриц как скалярное произведение матриц.
Умножение двух матриц
Теперь мы напишем программу Python для умножения двух матриц, где мы выполняем умножение, как мы это делали в приведенном выше примере. Мы можем использовать различные методы для написания такой программы на Python, но в этом руководстве будем использовать только следующие два метода:
- Использование метода вложенного цикла.
- Использование метода понимания вложенного списка.
В обоих методах мы напишем пример программы, чтобы понять их реализацию для умножения двух матриц.
Способ 1: Использование метода вложенного цикла
В этом методе мы собираемся использовать вложенный цикл for для двух матриц, выполнять над ними умножение и сохранять результат умножения в третьей матрице в качестве итогового значения.
Давайте разберемся с реализацией этого метода на следующем примере.
# Define two matrix A and B in program A = [[5, 4, 3], [2, 4, 6], [4, 7, 9]] B = [[3, 2, 4], [4, 3, 6], [2, 7, 5]] # Define an empty matrix to store multiplication result multiResult = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] # Using nested for loop method on A & B matrix for m in range(len(A)): for n in range(len(B[0])): for o in range(len(B)): multiResult[m][n] += A[m][o] * B[o][n] # Storing multiplication result in empty matrix # Printing multiplication result in the output print("The multiplication result of matrix A and B is: ") for res in multiResult: print(res)
The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103]
Способ 2: Использование метода понимания вложенного списка
В этом методе мы будем использовать понимание вложенного списка, чтобы получить результат умножения двух входных матриц. При использовании в программе метода понимания списка мы также будем использовать «zip в Python» для вложенного списка. Давайте разберемся с реализацией этого метода на следующем примере.
# Define two matrix A & B in the program A = [[5, 4, 3], [2, 4, 6], [4, 7, 9]] B = [[3, 2, 4], [4, 3, 6], [2, 7, 5]] # Using nested list method with zip in Python multiResult = [[sum(a * b for a, b in zip(Arow, Bcol)) for Bcol in zip(*B)] for Arow in A] # Printing multiplication result in the output print("The multiplication result of matrix A and B is: ") for res in multiResult: print(res)
The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103]
Нужно Транспонировать массив в python
Задание 1
Транспонировать массив A, не используя встроенных методов NumPy. Сохранить полученный массив в переменную A_tr. Допустимо использовать циклы и условные конструкции (при необходимости).
Напоминание: транспонирование – операция замены строк и столбцов местами. Пример:
[[2, 5, 0],
[7, 8, 1]]
После транспонирования:
[[2, 7],
[5, 8],
[0, 1]]
Подсказка: можно почитать про цикл for на pythontutor.ru. На самом деле, если вспомнить про выбор элементов в массиве NumPy, то одного цикла будет достаточно, условные конструкции не понадобятся.
написал вот такой вот код
i = 1
Self = [[2, 5, 0],
[7, 8, 1]]
for i in [[2, 5, 0], [7, 8, 1]]
‘[2, 7],’ , ‘[5, 8],’, ‘[0, 1]’:
print(i)
i += 1
но выдаёт синтаксическую ошибку. в Чём дело и как это исправить ?
Лучший ответ
l = [[2, 5, 0], [7, 8, 1]]
r = [[l[j][i] for j in range(len(l))] for i in range(len(l[0]))]
print(*(i for i in r), sep=’\n’)
Транспонирование
Биолог провёл исследование устойчивости нескольких видов бактерий стрептококка к нескольким антибиотикам и получил численные оценки, характеризующие эффективность действия каждого препарата. Его данные хранятся в формате текстовой таблицы дробных чисел (с плавающей точкой) med_research.txt, при этом по горизонтали изменяются виды бактерий, а по вертикали — виды антибиотиков. Однако для отчёта требуется, чтобы виды антибиотиков шли по горизонтали, а виды бактерий — по вертикали. Биолог узнал, что эта операция называется в математике транспонированием, но он не знает, как её сделать автоматически. Если вы не поможете, то ему предстоит провести ночь, вручную переставляя числа в огромном листе. В файле хранятся только сами числа. Список видов бактерий и список антибиотиков вас не интересуют, биолог вставит их сам.
Формат ввода
Ввод из файла med_research.txt, все значения в строках разделены пробелом. Количество строк в исходной матрице >= 2, количество столбцов в исходной матрице >= 2.
Формат вывода
Вывод в файл output.txt
Пример
Ввод
1 2 3 4 5
6 7 8 9 10
Вывод
1 6
2 7
3 8
4 9
5 10
Примечания
1) Матрица не обязательно должна состоять из 5-и столбцов или 2-х строк, может быть 3х3, 4х10, 1000х261 и т.д., матрица может быть любого размера, с учетом ограничения:
количество строк в исходной матрице >= 2, количество столбцов в исходной матрице >= 2.
2) Элементы исходной матрицы не обязаны быть целыми.
3) Библиотеками numpy и pandas пользоваться запрещено!
4) Тип float по умолчанию выводится с дробной частью. Вам же в задании совершенно не важно, какого типа число — целое или нет. Просто оставляйте его в виде строки. Т.е. Число 2 должно записываться в выходной файл как «2», а не как «2.0».
