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