gpt4 book ai didi

python - 将 numpy 数组的 rebin 优化为任意 binsize

转载 作者:行者123 更新时间:2023-11-30 22:46:04 25 4
gpt4 key购买 nike

我正在从 this 开始构建问题。我正在使用那里发布的解决方案重新分箱 numpy 数组,并添加少量额外内容:

from numpy import arange,append

x = arange(20)
x = x[:(x.shape[0]/bin)*bin].reshape((x.shape[0]//bin,-1)).mean(1)
x= append(x,x[(x.shape[0]/bin)*bin:].mean())

这是为了处理x.shape[0]的非除数箱。 append 添加剩余单元格的平均值。问题是我在这里创建了很多数组,并且超出了内存,无法提高运行时效率。有没有更好的办法?我什至正在考虑转移到列表,重新分箱,最后使用数组(结果)并返回它。

为了明确 bin=6,第一行产生:

array([  2.5,   8.5,  14.5])

第二个将附加:

18.5

mean运算符之前,生成的矩阵为:

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

第二个:

array([18, 19])

最终的结果当然是:

array([  2.5,   8.5,  14.5,  18.5])

最佳答案

如果你绝对想要一个数组,我想这应该可行

def rebin(x,bin):
x_pad=np.lib.pad(x,(0,bin-x.size%bin), 'constant').reshape(bin,-1)
return np.hstack((np.mean(x_pad, axis=1)[:-1],np.sum(x_pad[-1])/(x.size%bin)))

但我认为这样做更干净、更容易

def rebin(x,bin):
return np.array([a.mean() for a in np.array_split(x,bin)])

但这不会更快。

关于python - 将 numpy 数组的 rebin 优化为任意 binsize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40995467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com