Пользовательский матричный продукт в NumPy с пользовательскими поэлементными операциямиPython

Программы на Python
Anonymous
Пользовательский матричный продукт в NumPy с пользовательскими поэлементными операциями

Сообщение Anonymous »

Я ищу способ выполнить собственное матричное произведение в NumPy, где я могу заменить поэлементные операции умножения и сложения самоопределяемыми функциями, такими как лямбда-выражения. В частности, я хочу сохранить сигнатуру матричного умножения (n,k),(k,m) -> (n,m), но использовать специальные операторы для скалярного умножения и сложения при вычислении матричного произведения.< /p>

Пример:

Даны две матрицы A и B:

Код: Выделить всё

A = [[a_11, a_12],
[a_21, a_22]]

B = [[b_11, b_12],
[b_21, b_22]]
Стандартное матричное произведение C = AB рассчитывается как:

Код: Выделить всё

C_ij = sum(A_ik * B_kj for k in range(n))
Я хочу заменить умножение () и сложение () операции с пользовательскими функциями, например custom_multiply и custom_add, например:

Код: Выделить всё

C_ij = custom_add(custom_multiply(A_i1, B_1j), custom_multiply(A_i2, B_2j), ..., custom_multiply(A_ik, B_kj))

Пользовательские операторы:

Например, я мог бы определить:

Код: Выделить всё

custom_multiply = lambda x, y: (x&0xff) * y  # Custom multiplication function
custom_add = lambda x, y: max(x, y)          # Custom addition function

Пример использования:

Я считаю, что полезно иметь собственный матричный продукт для различных приложений. Например, в сети вычисление маршрутов может следовать общему процессу умножения матриц, если задана матрица смежности. Однако поэлементные операции должны быть настроены в соответствии с конкретными ограничениями, требуемыми определенными протоколами маршрутизации.

Вопрос:

Я не хочу используйте простые циклы для выполнения матричного произведения. Мои пользовательские поэлементные операции можно разложить на серию базовых арифметических операций, которые поддерживаются NumPy и могут быть расширены/транслированы до матричных. Я хотел бы знать:
  • Есть ли встроенная функция NumPy для поддержки пользовательских матричных продуктов?
  • Если нет, существует ли общий способ эффективно разбить процесс матричного продукта на ряд матричных операций?
Любые рекомендации или примеры были бы очень признательны.

Подробнее здесь: https://stackoverflow.com/questions/785 ... operations

Вернуться в «Python»