Возможно, виновником является копирование массивов, переданных в точка .
Как сказал Свен, продукт dot основан на операциях BLAS. Эти операции требуют массивов, хранящихся в непрерывном порядке C. Если оба массива, переданные точка , находятся в C_CONTIGUOUS, вы должны увидеть лучшую производительность.
Конечно, если ваши два массива, переданные в точку, действительно являются 1D (8,), тогда вы должны увидеть и , что флаги C_CONTIGUOUS AND F_CONTIGUOUS установлены в True; но если они (1, 8), то вы можете увидеть смешанный порядок.
>>> w = NP.random.randint(0, 10, 100).reshape(100, 1)
>>> w.flags
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : False
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
Альтернатива: используйте _GEMM от BLAS, который открывается через модуль, scipy.linalg.fblas . (Два массива, A и B, очевидно, в порядке Фортрана, потому что используется fblas .)
from scipy.linalg import fblas as FB
X = FB.dgemm(alpha=1., a=A, b=B, trans_b=True)