У меня есть два массива numpy, X и y. X имеет размер m, а y - размер n. Мне нужно умножить каждый элемент y на каждый элемент X, а затем просуммировать.
Что-то вроде [sum(X[0]*y) sum(X[1]*y) sum(X[n]*y)]
Это то, что я имею в виду
np.sum(X[:, np.newaxis] * y, axis=1)
Однако обычно X и y действительно большие, и поэтому
X[:, np.newaxis] * y
Создает огромный временный массив, который взрывает хлам. Есть ли лучший способ реализовать это?
1 ответ
Если вы умножаете каждый элемент y
на каждый элемент X
, просто сначала умножьте все элементы X
вместе, а затем умножьте массив y
на это число и сумма:
num = X.prod()
(num * y).sum()
Изменить: указанный вами массив можно получить, умножив массив X
на сумму элементов y
:
X * y.sum()
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.
np.sum(X[:, np.newaxis] * y, axis=1)
. Мне нужен 1d массив вроде[sum(X[1]*y), sum(X[2]*y), sum(X[3]*y)]
и так далее.X * y.sum()
то, что вы хотите?