Массивы. Как оперировать столбцами и строками если читаешь матрицу из файла?
По заданию мне нужно прочесть матрицу из файла, а затем найти среднее арифметическое четных столбцов и наибольший элемент
Есть только скрипт чтения из файла:
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] # Столбец с нужным номером получить немного сложнее