我试图计算两个数组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中执行此操作? 谢谢
答案 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)
...