Working with vectors in Python#
Working with vectors in Python is made simple by using numpy
arrays.
import numpy as np
# define two 2D vectors using numpy arrays
a = np.array([5,1])
b = np.array([2,4])
print(a)
[5 1]
print(b)
[2 4]
# vector addition
c = a + b
print(c)
[7 5]
# vector subtraction
d = a - b
print(d)
[ 3 -3]
Remember that multiplication of numpy
arrays involves element-wise multiplication and returns a new array.
# vector multiplication?
e = a * b
print(e)
[10 4]
This is not the same as \(\mathbf{a}\cdot\mathbf{b}\) (dot product) or \(\mathbf{a}\times\mathbf{b}\) (cross product).
Instead we can use the numpy.dot()
and numpy.cross()
functions to compute the dot product and cross product of \(\mathbf{a}\) and \(\mathbf{b}\) respectively:
# dot product
dot = np.dot(a,b)
print(dot)
14
# cross product
cross = np.cross(a,b)
print(cross)
18
You might have noticed that the dot product is equal to the sum of a*b
:
print(a*b)
[10 4]
print(np.sum(a*b))
14
print(np.dot(a,b))
14
Which should make sense from the definition of the cross product.
Exercise#
You previously wrote some code to calculate the interatomic distances (and angles) between pairs of atoms in two molecules, using the expression
Starting from your previous code, or from scratch, write a new version of this code that solves the same problem using numpy
arrays and np.dot()
.