Массивы. Как оперировать столбцами и строками если читаешь матрицу из файла?

По заданию мне нужно прочесть матрицу из файла, а затем найти среднее арифметическое четных столбцов и наибольший элемент

Есть только скрипт чтения из файла:

def matrix6():
    name = "Lab3_matrix.txt"
    f = open(name, 'rt')
    M = []
    # Чтение данных из файла и образование новой матрицы
    for line in f: 
        lines = line.split(' ') 
        # временный список
        lst = []
        # обход элементов в строке
        for ln in lines:
            ln = ln.rstrip()
            if ln != '':
                num = int(ln)  # взять отдельное число
                lst = lst + [num]  # добавить число к списку
        M = M + [lst]  # добавить строку к результирующей матрице
    print("M = ", M)
    f.close()

Как мне выделить здесь столбцы и строки?

ПЫ.СЫ. Код не мой


Ответы (2 шт):

Автор решения: Egettl

Например можно использовать модуль NumPy. Необходимо преобразовать массив чисел к матрице и все. Например так:

import numpy as np

mas = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
numpy_mas = np.array(np.reshape(mas, (4, 3)))

print(numpy_mas)

print("\n3-ий столбец:")
print(numpy_mas[:, 2])

print("\n2-ая строка:")
print(numpy_mas[1, :])

Результат:

[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

3-ий столбец:
[ 3  6  9 12]

2-ая строка:
[4 5 6]

А дальше работать как с обычным массивом.

→ Ссылка
Автор решения: V-Mor

Выделить столбцы и строки после того как Вы считаете матрицу (не) Вашим кодом очень просто:

M[номер строки][номер столбца] # Получить отдельный элемент
M[номер строки] # Получить строку с нужным номером
[row[номер столбца] for row in M] # Столбец с нужным номером получить немного сложнее
→ Ссылка