numpy.mean在不同的行大小上

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

当尺寸相同时,numpy Mean函数可以很好地工作。

a = np.array([[1, 2], [3, 4]])
a.mean(axis=1)
array([ 1.5,  3.5])

但是如果我用改变行大小来做到这一点就会出现错误

a = np.array([[1, 2], [3, 4, 5]])
a.mean(axis=1)
IndexError: tuple index out of range

我在文档中找不到有关此问题的任何内容。我可以自己计算平均值,但我想为此使用内置函数。

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

    这是一种方法-

    # Store length of each subarray
    lens = np.array(map(len,a))
    
    # Generate IDs based on the lengths
    IDs = np.repeat(np.arange(len(lens)),lens)
    
    # Use IDs to do bin-based summing of a elems and divide by subarray lengths
    out = np.bincount(IDs,np.concatenate(a))/lens
    

    样品运行-

    In [34]: a   # Input array
    Out[34]: array([[1, 2], [3, 4, 5]], dtype=object)
    
    In [35]: lens = np.array(map(len,a))
        ...: IDs = np.repeat(np.arange(len(lens)),lens)
        ...: out = np.bincount(IDs,np.concatenate(a))/lens
        ...:
    
    In [36]: out  # Average output
    Out[36]: array([ 1.5,  4. ])
    

    使用列表理解的更简单的替代方法-

    In [38]: [np.mean(i) for i in a]
    Out[38]: [1.5, 4.0]
    


知识点
面圈网VIP题库

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

去下载看看