Working with vectors in Python

Contents

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

\[r_{ij} = \sqrt{(x_i-x_j)^2 + (y_i-y_j)^2 + (z_i-z_j)^2}\]

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().