Как стать автором
Обновить

Комментарии 18

Ваша реализация не позволит работать с большими (например, миллион на миллион) матрицами, которых в датасайнс очень много. Да и с маленькими будет работать медленно и численно неустойчиво. Пользуйтесь сайпаем, хотя полезно иметь представление, что у него под капотом, да. Но первые шаги в это проще на бумаге делать...

Транспонировать можно и так:

# Возвращает транспонированную матрицу, т.е. Y = X^T
def transpose(X):
    return list(map(list, zip(*X)))

В numpy?

Да, конечно в нем. Очень сложно представить на практике работу с матрицами вне numpy/pyarrow. Академический, учебный кейс - тот же: вращать матрицы нужно в том, в чем они вращаются на практике.

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

Серьёзная работа с матрицами для data science - это сложная вещь, тут на таком уровне делать нечего.

В Питоне есть специальные пакеты для этого, использующие эффективное представление матриц и качественные численные алгоритмы.

Что касается операции транспонирования матрицы, то она вообще не должна иметь физической реализации в реальной работе. Это просто переобозначение индексов.

А разве определитель обратной матрицы не равен обратному определителю прямой?

Там и у исходной неправильно вычислен

)))

Я python не знаю, но осуждаю. Писать в чистом виде математику на python это кажется самое вредное, что только можно. Если всё то же самое сделать с использованием библиотек - было бы уже как-то полезно.
P.S.
Можно я напишу статью как выводить "Hello, word!" на Си?

Мне было бы интересно какая будет разница если выводить "Hello, world!" на C# и С++. Когда я писал на С, этих "диалектов" еще не было. А разобраться, что под капотом в библиотеках - прекрасное начало долгого пути.

Julia !!!

Действительно зачем зная про нампай, математикий аппарат тут довольно простой.

Эх, алгебра 1 курс, вспоминаю как через метод гаусса считали этот кошмар вещественночисленный

Простите, совсем не дата саинтист и даже не разраб. Но разве такие вещи не должны на GPU считать как-то? Или там совсем неподходящая структура данных?

Получается, что функцию rank_of_matrix можно сократить до:

def rank_of_matrix(matrix: list[list]) -> int:
  rank = min(len(matrix), len(matrix[0]))
  return rank

и иногда даже можно получить верный ответ.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории