A. chbihi - 1 year ago 146
Python Question

# How to equalize the size of two numpy arrays

I am trying to compute the norm L2 error between two arrays y1 and y2. However, my two arrays have different sizes.

``````x1 = np.array([0 , 0.1 , 0.2 , 0.3 , 0.4 , 0.5])
y1 = np.array([0 , 2 , 2 , 3 , 4 , 6])

x2 = np.array([0 , 0.1 , 0.2 , 0.3 , 0.4])
y2 = np.array([0 , 2 , 2 , 3 , 4])

L2_error = np.linalg.norm(y1-y2)

ValueError: operands could not be broadcast together with shapes (5) (6)
``````

My idea is to perform an interpolation according to the x array with the greater size (in my case: x1). So I will find a sixth element for x2 and y2, then I could compute my error.

Does anyone have an efficient tool to do this in Python?
Thank you

You could try using `itertools.zip_longest` and fill the shorter sequence links with a default value:

https://docs.python.org/3.3/library/itertools.html?highlight=zip#itertools.zip_longest

For example:

``````>>> from itertools import *
>>> lst = zip_longest(range(10),
...                   range(9),
...                   fillvalue=None)
>>> lst
... [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8), (9, None)]
>>> for x, y in lst:
...     if None not in [x, y]:
...        compute(x, y)
...
``````