Комментарии 18
Ваша реализация не позволит работать с большими (например, миллион на миллион) матрицами, которых в датасайнс очень много. Да и с маленькими будет работать медленно и численно неустойчиво. Пользуйтесь сайпаем, хотя полезно иметь представление, что у него под капотом, да. Но первые шаги в это проще на бумаге делать...
Транспонировать можно и так:
# Возвращает транспонированную матрицу, т.е. Y = X^T
def transpose(X):
return list(map(list, zip(*X)))
И так:
X.T
В numpy?
Да, конечно в нем. Очень сложно представить на практике работу с матрицами вне numpy/pyarrow. Академический, учебный кейс - тот же: вращать матрицы нужно в том, в чем они вращаются на практике.
Серьёзная работа с матрицами для data science - это сложная вещь, тут на таком уровне делать нечего.
В Питоне есть специальные пакеты для этого, использующие эффективное представление матриц и качественные численные алгоритмы.
Что касается операции транспонирования матрицы, то она вообще не должна иметь физической реализации в реальной работе. Это просто переобозначение индексов.
А разве определитель обратной матрицы не равен обратному определителю прямой?
Я python не знаю, но осуждаю. Писать в чистом виде математику на python это кажется самое вредное, что только можно. Если всё то же самое сделать с использованием библиотек - было бы уже как-то полезно.
P.S.
Можно я напишу статью как выводить "Hello, word!" на Си?
del
Действительно зачем зная про нампай, математикий аппарат тут довольно простой.
Эх, алгебра 1 курс, вспоминаю как через метод гаусса считали этот кошмар вещественночисленный
Простите, совсем не дата саинтист и даже не разраб. Но разве такие вещи не должны на GPU считать как-то? Или там совсем неподходящая структура данных?
Получается, что функцию rank_of_matrix можно сократить до:
def rank_of_matrix(matrix: list[list]) -> int:
rank = min(len(matrix), len(matrix[0]))
return rank
и иногда даже можно получить верный ответ.
Работа с матрицами в python