Как выполнить точку в NumPy без использования встроенного метода? - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть следующий код, который возвращает вывод: 4 Теперь я хочу выполнить ту же операцию без использования функции dot ().Возможно ли это?

import numpy as np

a=np.array([1,2])
b=np.array([2,1])
print(a.dot(b))

Ответы [ 4 ]

2 голосов
/ 25 сентября 2019

Да Возможно, вы можете кодировать так:

import numpy as np

a=np.array([1,2])
b=np.array([2,1])
dot=0
for e,f in zip(a,b):
    dot+=e*f
print(dot)
0 голосов
/ 25 сентября 2019

Вы также можете использовать форму суммирования Эйнштейна:

np.einsum('x,x->', a, b)
0 голосов
/ 25 сентября 2019

Поскольку скалярное произведение двух векторов является просто суммой их поэлементных произведений, вы можете сделать это:

sum(a * b)

Не используйте циклы, если вы можете избежать этого;это редко требуется в NumPy.Если вы действительно хотите вообще избегать NumPy, постижение списка возможно более Pythonic:

sum(a_i * b_i for a_i, b_i in zip(a, b))
0 голосов
/ 25 сентября 2019

Для Python 3.5 или выше

import numpy as np

a = np.array([1,2])
b = np.array([2,1])

print(a @ b) # 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...