【问题标题】:Vectorize np.arange or equivalent矢量化 np.arange 或等效
【发布时间】:2015-05-25 15:23:26
【问题描述】:

我有一个很长的一维数组。我想创建一个数组,它是np.arange() 应用于数组中的每个值加上一些常量的结果。例如,如果常量 = 3 并且我的数组看起来像

[1,2,3,4,5]

我想要

[[1,2,3]
 [2,3,4]
 [3,4,5]
 [4,5,6]
 [5,6,7]]

np.arange() 只接受标量作为参数。我玩了np.vectorize() 有点失败。显然,我可以使用循环或列表来执行此操作,然后转换为数组,但我想知道是否有一个好的 numpy-only 解决方案。

【问题讨论】:

    标签: python arrays numpy vectorization


    【解决方案1】:

    你可以使用加法和广播:

    >>> x = np.array([1,2,3,4,5])
    >>> constant = 3
    >>> x[:,None] + np.arange(constant)
    array([[1, 2, 3],
           [2, 3, 4],
           [3, 4, 5],
           [4, 5, 6],
           [5, 6, 7]])
    

    这也可以写成np.add.outer(x, np.arange(constant))

    【讨论】:

      猜你喜欢
      • 2021-03-01
      • 2012-06-11
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 2012-05-16
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多