Поскольку скалярное произведение двух векторов является просто суммой их поэлементных произведений, вы можете сделать это:
sum(a * b)
Не используйте циклы, если вы можете избежать этого;это редко требуется в NumPy.Если вы действительно хотите вообще избегать NumPy, постижение списка возможно более Pythonic:
sum(a_i * b_i for a_i, b_i in zip(a, b))