В числовой библиотеке Python NumPy , как функция numpy.dot
работает с массивами различного порядка памяти? numpy.dot(c-order, f-order)
против dot(f-order, c-order)
и т. Д.
Причина, по которой я спрашиваю, состоит в том, что давным-давно (numpy 1.0.4?) Я провел несколько тестов и заметил, что numpy.dot
работает хуже, чем вызов dgemm
из scipy.linalg
напрямую, с правильными флагами транспонирования, хотя оба вызовите ту же библиотеку BLAS внутри. (Я подозревал, что причиной было копирование входных матриц внутри numpy.dot
, что трагично, если ввод велик.)
Теперь я попробовал еще раз, и на самом деле numpy.dot
выполняет то же самое, что и dgemm
, поэтому нет причин держать массивы в определенном порядке и устанавливать флаги транспонирования вручную. Много чище кода.
Итак, мой вопрос: как работает недавняя (скажем, 1.6.0) numpy.dot
гарантия того, когда что-то копируется, а когда нет? Я обеспокоен 1) памятью 2) производительность здесь. Приветствия.