栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

快速获取.npy数组中每N行平均值的快速方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

快速获取.npy数组中每N行平均值的快速方法

两个值的平均值

a
,并
b
0.5*(a+b)

因此你可以做这样的:

newArray = 0.5*(originalArray[0::2] + originalArray[1::2])

它将所有连续的两行相加,最后将每个元素乘以

0.5

由于在标题中您要在N行上求平均值,因此这是一个更通用的解决方案:

def groupedAvg(myArray, N=2):    result = np.cumsum(myArray, 0)[N-1::N]/float(N)    result[1:] = result[1:] - result[:-1]    return result

n
元素上的均值的一般形式是
sum([x1,x2,...,xn])/n
。向量中
m
to的元素之和与从的th元素减去th元素相同。 除非
为0, 否则 您将不减去任何值(结果[0])。
这就是我们在这里利用的优势。另外,由于所有内容都是线性的,因此除以并不重要,因此我们一开始就要做,但这只是一个问题。
m+n``v``m-1``m+n``cumsum(v)

m

N


如果最后一组的

N
元素少于个,它将被完全忽略。如果您不想忽略它,则必须特别对待最后一组:

def avg(myArray, N=2):    cum = np.cumsum(myArray,0)    result = cum[N-1::N]/float(N)    result[1:] = result[1:] - result[:-1]    remainder = myArray.shape[0] % N    if remainder != 0:        if remainder < myArray.shape[0]: lastAvg = (cum[-1]-cum[-1-remainder])/float(remainder)        else: lastAvg = cum[-1]/float(remainder)        result = np.vstack([result, lastAvg])    return result


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410724.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号