【问题标题】:NumPy: how to "scale" an array "smoothly" [duplicate]NumPy:如何“平滑”“缩放”数组[重复]
【发布时间】:2022-01-23 01:46:08
【问题描述】:

假设我有一个像这样的 numpy 数组

array([1, 3, 5, 7, 9, 11])

我想将它“缩放”两倍,使用两个相邻数字的平均值来填补“空白”。结果:

array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11])

有人知道怎么做吗?

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    这是一个您可以使用的简单函数。

    def double_list(arr):
        new_arr = []
        for i in range(len(arr)):
            new_arr.append(arr[i])
            if i == 0 or i == len(arr) - 1:
                new_arr.append(arr[i])
            else:
                new_arr.append(int((arr[i] + arr[i + 1]) / 2))
        return new_arr
    
    
    print(double_list(arr))
    

    【讨论】:

    • 感谢您,它运行良好。我认为会有一个内置功能。但是这个解决方案对我来说已经足够了。
    • 引用python的禅意“简单胜于复杂。”
    【解决方案2】:

    使用 numpy arange 函数

    arr = np.array([1, 3, 5, 7, 9, 11])
    
    arr2 = np.arange(arr.min(),arr.max() + 1)
    print(arr2)
    

    输出:

    [ 1  2  3  4  5  6  7  8  9 10 11]
    

    根据您的要求获得输出

    arr2 = np.append(np.arange(arr.min(),arr.max() + 1), arr.max())
    print(arr2)
    

    输出:

    [ 1  2  3  4  5  6  7  8  9 10 11 11]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 2011-11-23
      • 2021-10-09
      • 1970-01-01
      • 2017-11-08
      • 1970-01-01
      相关资源
      最近更新 更多