【问题标题】:Python - Different shapes 1D array broadcastingPython - 不同形状的一维数组广播
【发布时间】:2019-12-03 14:34:54
【问题描述】:

我有两个不同形状的数组,我想一起广播:

  • array1: (1460,)
  • array2: (1462,)

显然,在尝试一起广播数组时,它会返回:

ValueError: operands could not be broadcast together with shapes (1460,) (1462,)

这两个数组是时间序列,但是array1与array2相比缺少第一个和最后一个值。

谁能指出一些工具或解决方案,以便一起广播不同形状的一维数组?

【问题讨论】:

  • 当形状不同时,您希望广播如何表现?
  • 广播,为了做什么?
  • 我希望广播它们以运行简单的计算,例如当数组1

标签: python broadcast


【解决方案1】:

我假设你有 numpy 数组,你可以做些什么来避免错误,就是让它们的长度相等。如果您知道缺少的索引,您可以非常简单地编写例如

w = np.where(array1 < array2[1:-1])

注意,在这种情况下,np.where 返回的索引数组引用了array1,当应用于array2 时会给出错误的结果!为避免此问题,另一种技巧是将np.nan 附加到较短的数组中,即它在您要与之比较的数组中没有“对应”值:

array1 = np.concatenate(([np.nan], array1 , [np.nan]))

然后你可以做类似的事情

w = np.where(array1 < array2)

w 适用于 array1 array2。所以我认为np.concatenate 是去这里的一种方式。请注意,这不是通用解决方案。这需要更深入地了解您是如何解决这个问题的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    相关资源
    最近更新 更多