Python / NumPy中用于计算均值的元素排列

发布于 2021-01-29 15:05:19

我有一维列表如下:

data = [1,5,9,13,
        2,6,10,14,
        3,7,11,15,
        4,8,12,16]

我要列出以下元组,并分别计算每个元组的平均值。

[(1,5,2,6), (3,7,4,8), (9,13,10,14), (11,15,12,16)]

预期结果应为:

[3.5, 5.5, 11.5, 13.5]

这样做更简单的方法是什么?

关注者
0
被浏览
88
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    将数据放入形状为(2,2,2,2)的4-d numpy数组中,然后取轴1和3上该数组的平均值:

    In [25]: data
    Out[25]: [1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15, 4, 8, 12, 16]
    
    In [26]: a = np.array(data).reshape(2, 2, 2, 2)
    
    In [27]: a
    Out[27]: 
    array([[[[ 1,  5],
             [ 9, 13]],
    
            [[ 2,  6],
             [10, 14]]],
    
    
           [[[ 3,  7],
             [11, 15]],
    
            [[ 4,  8],
             [12, 16]]]])
    
    In [28]: a.mean(axis=(1, 3))
    Out[28]: 
    array([[  3.5,  11.5],
           [  5.5,  13.5]])
    

    ravel()如果需要最终结果作为一维数组,则可以使用该方法:

    In [31]: a.mean(axis=(1, 3)).ravel()
    Out[31]: array([  3.5,  11.5,   5.5,  13.5])
    

    请参阅如何对numpy数组的2x2子数组的平均值进行矢量化处理?对于类似的问题。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看