Число, которое вы пытаетесь вычислить, является просто суммой квадратов всех записей X
. Суммируйте квадраты вместо того, чтобы вычислять гигантский матричный продукт, полный записей, которые вам не нужны:
return (X**2).sum()
Или рассмотрите матрицу и используйте dot
, что, вероятно, быстрее для смежных X
:
raveled = X.ravel()
return raveled.dot(raveled)
На самом деле, ravel
, вероятно, быстрее для несмежных X
, также - даже когда ravel
нужно копировать, он не делает больше выделения, чем (X**2).sum()
.