Python - 不同形状的一维阵列广播
Python - Different shapes 1D array broadcasting
我有两个不同形状的数组,我想一起广播:
- array1: (1460,)
- array2: (1462,)
显然在尝试一起广播数组时 returns:
ValueError: operands could not be broadcast together with shapes (1460,) (1462,)
两个array是时间序列,array1与array2相比少了第一个和最后一个值
有没有人能指出一些工具或解决方案来一起广播不同形状的一维数组?
我假设您有 numpy
个数组,为了避免错误,您可以做的是让它们等长。如果您知道缺少的索引,您可以非常简单地编写例如
w = np.where(array1 < array2[1:-1])
注意,在这种情况下,np.where
返回的索引数组指的是array1,应用于array2时会给出错误的结果!为了避免这个问题,另一个技巧是将 np.nan
附加到较短的数组,即它在数组中没有 'corresponding' 值,你想将它与以下值进行比较:
array1 = np.concatenate(([np.nan], array1 , [np.nan]))
然后你可以做类似
的事情
w = np.where(array1 < array2)
和w
适用于数组1 和数组2。所以我认为 np.concatenate
是一种去这里的方法。请注意,这不是通用解决方案。这需要更深入地了解您是如何解决这个问题的。
我有两个不同形状的数组,我想一起广播:
- array1: (1460,)
- array2: (1462,)
显然在尝试一起广播数组时 returns:
ValueError: operands could not be broadcast together with shapes (1460,) (1462,)
两个array是时间序列,array1与array2相比少了第一个和最后一个值
有没有人能指出一些工具或解决方案来一起广播不同形状的一维数组?
我假设您有 numpy
个数组,为了避免错误,您可以做的是让它们等长。如果您知道缺少的索引,您可以非常简单地编写例如
w = np.where(array1 < array2[1:-1])
注意,在这种情况下,np.where
返回的索引数组指的是array1,应用于array2时会给出错误的结果!为了避免这个问题,另一个技巧是将 np.nan
附加到较短的数组,即它在数组中没有 'corresponding' 值,你想将它与以下值进行比较:
array1 = np.concatenate(([np.nan], array1 , [np.nan]))
然后你可以做类似
的事情w = np.where(array1 < array2)
和w
适用于数组1 和数组2。所以我认为 np.concatenate
是一种去这里的方法。请注意,这不是通用解决方案。这需要更深入地了解您是如何解决这个问题的。