В 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) производительности здесь. Приветствия.