在 numpy 数组中取加权和的最简单/最快的方法是什么?
示例:使用欧拉法求解热方程
length_l=10
time_l=10
u=zeros((length_l,length_l))# (x,y)
u[:, 0]=1
u[:,-1]=1
print(u)
def dStep(ALPHA=0.1):
for position,value in ndenumerate(u):
D2u= (u[position+(1,0)]-2*value+u[position+(-1, 0)])/(1**2) \
+(u[position+(0,1)]-2*value+u[position+( 0,-1)])/(1**2)
value+=ALPHA*D2u()
while True:
dStep()
print(u)
D2u
应该是二维的第二个中心差异。如果我可以添加像(1,4)+(1,3)=(2,7)
. 不幸的是,python 将它们添加为(1,4)+(1,3)=(1,4,1,3)
.
请注意,计算D2u
等效于使用以当前位置为中心的内核进行点积:
0, 1, 0
1,-4, 1
0, 1, 0
这可以向量化为点积吗?