python – 除了一个轴之外的所有轴的求和

python – 除了一个轴之外的所有轴的求和,第1张

概述好几次,我已经处理了一个ND数组,比如 foo = np.arange(27).reshape((3,3, 3)) 然后我会有一个维度,我希望保留下一个 *** 作的变量.说下一个 *** 作是意思,在这种情况下 preserveAxis = 1desiredOutcome = foo.mean(axis=0).mean(axis=1) 之前是我想要的结果,因为我首先取平均值超过第0轴,然后超过第2轴(在初始 *** 好几次,我已经处理了一个ND数组,比如

foo = np.arange(27).reshape((3,3,3))

然后我会有一个维度,我希望保留下一个 *** 作的变量.说下一个 *** 作是意思,在这种情况下

preserveAxis = 1desiredOutcome = foo.mean(axis=0).mean(axis=1)

之前是我想要的结果,因为我首先取平均值超过第0轴,然后超过第2轴(在初始 *** 作后成为第1轴).也就是说,我已经在轴0和2上完成了 *** 作,但保留了轴1.

这种类型的程序很麻烦,最重要的是不是通用的.我正在寻找一种保留一个轴的通用方法,但是对所有其他轴求和/均值.我怎么能达到这个最佳状态,最好是在numpy内?

解决方法 这是针对减少 ufuncs的n-dim案例的一般推广 –

def reduce_skipfew(ufunc,foo,preserveAxis=None):    r = np.arange(foo.ndim)       if preserveAxis is not None:        preserveAxis = tuple(np.delete(r,preserveAxis))    return ufunc(foo,axis=preserveAxis)

样品运行 –

In [171]: reduce_skipfew(np.mean,preserveAxis=1)Out[171]: array([10.,13.,16.])In [172]: foo = np.arange(27).reshape((3,3))In [173]: reduce_skipfew(np.mean,preserveAxis=1)Out[173]: array([10.,16.])In [174]: reduce_skipfew(np.sum,preserveAxis=1)Out[174]: array([ 90,117,144])# preserve none i.e. sum allIn [175]: reduce_skipfew(np.sum,preserveAxis=None)Out[175]: 351# preserve more than one axisIn [176]: reduce_skipfew(np.sum,preserveAxis=(0,2)) Out[176]: array([[ 9,12,15],[36,39,42],[63,66,69]])
总结

以上是内存溢出为你收集整理的python – 除了一个轴之外的所有轴的求和全部内容,希望文章能够帮你解决python – 除了一个轴之外的所有轴的求和所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192091.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存