如何均衡两个numpy数组的大小

时间:2016-10-21 07:19:44

标签: python

我试图计算两个数组y1和y2之间的范数L2误差。但是,我的两个数组有不同的大小。

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)

我的想法是根据具有更大尺寸的x数组执行插值(在我的例子中:x1)。所以我会找到x2和y2的第六个元素,然后我可以计算我的错误。

有没有人有一个有效的工具在Python中执行此操作? 谢谢

1 个答案:

答案 0 :(得分:1)

您可以尝试使用itertools.zip_longest并使用默认值填充较短的序列链接:

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

例如:

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