gpt4 book ai didi

python - 加速一个计算巨大数组中邻居平均值的程序

转载 作者:行者123 更新时间:2023-11-28 20:28:35 24 4
gpt4 key购买 nike

我的程序速度有问题。我想计算一个巨大数组中四个邻居的平均值。这是我的代码的一部分。您对如何更改最后一行有任何想法吗?或者我应该使用另一个数组?

for a in np.arange(100000):
for x in np.arange(size):
for y in np.arange(size):
if unchangeableflag[x*size+y] == 0:
vnew[x*size+y] = (v[(x+1)*size+y] + v[(x-1)*size+y] + v[x*size+y+1] + v[x*size+y-1]) / 4.0

最佳答案

您根本不需要循环。假设 vvnewunchangeableflag 是具有 size*size 条目的一维数组,您可以这样做

v = v.reshape(size, size)
vnew = vnew.reshape(size, size)
unchangeableflag = unchangeableflag.reshape(size, size)
average = v[1:-1, 2:]
average += v[1:-1, :-2]
average += v[2:, 1:-1]
average += v[-2:, 1:-1]
average /= 4.0
vnew[1:-1, 1:-1][unchangeableflag[1:-1, 1:-1] == 0] = average

但是您实际上想要达到什么目的?这看起来很可疑,你可以通过一些离散拉普拉斯算子的应用来逃脱。

(注意这里假设v包含 float 。如果'v'的dtype是相同的整数类型,你需要稍微修改。)

关于python - 加速一个计算巨大数组中邻居平均值的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4829738/

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