Учитывая массив 2D numpy
, мне нужно вычислить произведение точек каждого столбца с самим собой и сохранить результат в массиве 1D. Следующие работы:
In [45]: A = np.array([[1,2,3,4],[5,6,7,8]])
In [46]: np.array([np.dot(A[:,i], A[:,i]) for i in xrange(A.shape[1])])
Out[46]: array([26, 40, 58, 80])
Есть ли простой способ избежать цикла Python? Вышеизложенное вряд ли конец света, но если для этого есть примитив numpy
, я бы хотел его использовать.
edit На практике матрица имеет много строк и относительно немного столбцов. Поэтому я не слишком заинтересован в создании временных массивов, больших O(A.shape[1])
. Я также не могу изменить A
на месте.