С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.02.2023
Сообщений: 4

Транспонирование матриц

20.02.2023, 11:57. Показов 791. Ответов 7

Студворк — интернет-сервис помощи студентам
Вам дан файл с матрицей, нужно транспонировать матрицу, размер не указан вот что у меня получилось, но мне надо ещё что бы всё было так сказать красиво и матрица транспонировалась в форматированную например каждое число в столбце выравнивалось по правому краю наибольшего числа

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
with open("file_name.txt", "r", encoding='utf8') as file:
    lines = file.readlines()
mat1 = []
for i in range(len(lines)):
    row = lines[i].split()
    new_row = []
    for j in row:
        new_row.append(int(j))
    mat1.append(new_row)
mat2=[[] for i in range (len(mat1[0]))]
for i in range (len(mat1)):
    for j in range(len(mat1[i])):
        mat2[j].append(mat1[i][j])
with open('123.txt', 'w') as f:
    for row in mat2:
        f.write(' '.join([str(i) for i in row]) + '\n')
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2023, 11:57
Ответы с готовыми решениями:

Транспонирование матриц
Здравствуйте, мне сделали вот такую программу по транспонированию матриц, однако преподаватель сказал сделать, что-бы пользователь мог сам...

Транспонирование на 45°
Ввели N строк по N целых чисел (для удобства представлены тут цифрами). Полученную матрицу 1234 5678 9012 3456 попытались...

Транспонирование
Ввод стандартный ввод или med_research.txt Вывод output.txt Биолог провёл исследование устойчивости нескольких видов бактерий...

7
 Аватар для rim41
1045 / 313 / 78
Регистрация: 16.03.2020
Сообщений: 954
20.02.2023, 12:51
Цитата Сообщение от Lehabob Посмотреть сообщение
каждое число в столбце выравнивалось по правому краю наибольшего числа
Есть встроенный способ выделять конкретное число символов под вывод. Например, красивый вывод таблицы умножения будет таким:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> for i in range(1, 10):
...     for j in range(1, 10):
...             print(f"{i * j:5d}", end='')
...     print()
...
    1    2    3    4    5    6    7    8    9
    2    4    6    8   10   12   14   16   18
    3    6    9   12   15   18   21   24   27
    4    8   12   16   20   24   28   32   36
    5   10   15   20   25   30   35   40   45
    6   12   18   24   30   36   42   48   54
    7   14   21   28   35   42   49   56   63
    8   16   24   32   40   48   56   64   72
    9   18   27   36   45   54   63   72   81
То есть форматируя текст можно указать через двоеточие нужное число, и будет заполняться пробелами всё остальное. Так с любым двумерным списком / матрицей можно работать
0
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
20.02.2023, 13:06
Lehabob, файл с матрицей приложите сюда.Lehabob,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from random import randint
 
 
def gen_matrix(n, m, min_, max_):
    matrix = [[randint(min_, max_) for _ in range(m)] for _ in range(n)]
    with open('in.txt', 'w') as file:
        file.writelines(' '.join(map(str, line)) + '\n' for line in matrix)
 
 
def read_matrix():
    with open('in.txt') as file:
        return [line.split() for line in file.readlines()]
 
 
def trans_matrix(matrix):
    return [*zip(*matrix)]
 
 
def write_matrix(matrix):
    width = max(len(max(line, key=len)) for line in matrix)
    with open('out.txt', 'w') as file:
        file.writelines(' '.join(map(lambda x: x.rjust(width), line)) + '\n' for line in matrix)
 
 
if __name__ == '__main__':
    gen_matrix(n=3, m=4, min_=90, max_=110)
    matrix = read_matrix()
    matrix = trans_matrix(matrix)
    write_matrix(matrix)
0
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
20.02.2023, 13:59
Без ввода-вывода в файл:
Python
1
2
3
4
5
6
7
8
9
10
from random import randint
def out(m):
    for r in m:
        for i in r:
            print(i, end='\t')
        print()
mat1 = [[randint(0, 10) for _ in range(10)] for _ in range(9)]
out(mat1)
mat2 = zip(*mat1)
out(mat2)
1
Эксперт Python
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
20.02.2023, 14:20
Parramon, по правому краю…
1
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
20.02.2023, 14:26
Gdez, не заметил... Тогда как rim41, написал
Python
1
2
3
4
5
6
7
8
9
10
from random import randint
def out(m):
    for r in m:
        for i in r:
            print(f"{i:5d}", end='')
        print()
mat1 = [[randint(0, 10) for _ in range(10)] for _ in range(9)]
out(mat1)
mat2 = zip(*mat1)
out(mat2)
1
0 / 0 / 0
Регистрация: 20.02.2023
Сообщений: 4
21.02.2023, 18:27  [ТС]
Не совсем понимаю как будет работать эта часть, зачем вы вводите рандом ну ладно, и получается не матрица как минимум а просто таблица с полу пустым последним столбом, или я что-то сделал не так, так же по-моему ф-строки не робят внутри массива из-за этого лично у меня всё шло не по плану, я опять повторюсь я не понимаю что вы сделали я новенький в питоне и увалень тот ещё объясните пожалуйста
0
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
21.02.2023, 21:12
Lehabob, Мы делаем рандом потому, что ты не приложил файл. Мне, например, лень его создавать.
f-строки работают всегда, когда ты формируешь строку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2023, 21:12
Помогаю со студенческими работами здесь

Транспонирование матрицы
В файле matrix.txt содержится матрица M x N. Напишите программу transpose.py, которая транспонирует матрицу и сохраняет результат в файл...

транспонирование матрицы
Всем привет! помогите, найти ошибку при транспонировании матрицы, пожалуйста! from random import randint x = int(input("rows:...

Транспонирование матрицы
Составить программу обработки двумерного массива А 3:3, осуществите транспонирование матрицы А.

Интервалы и транспонирование
Добавим в класс Note сравнение нот. Сравнивать будем по высоте, без учёта длительности, причём будем считать большей ту ноту, чей тон выше...

Транспонирование матрицы
Напишите функцию transpose(matrix), которая принимает матрицу N × M (т.е. список из N списков-строк по M элементов каждый) и транспонирует...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru