这是C代码:
btemp = (*beta)/(*beta_prev);
for (k=0; k<xsize*ysize; k++) {
parray[k] = zarray[k] + btemp*parray[k];
}
我用Python做了以下工作:
def saxpy(a, x, y):
return np.array([a * xi + yi for xi, yi in zip(x, y)], np.float32)
#...
btemp = beta / beta_prev
ptemp = saxpy(btemp, parray, zarray)
parray[:] = ptemp
在我的代码中,它似乎运行良好(zarray
和parray
不断变化,因为它们在while循环中)。你知道吗
但后来我做到了:
btemp = beta / beta_prev
parray = saxpy(btemp, parray, zarray)
我的代码在循环中迭代了几次后失败了,它们是不是一样?你知道吗
您将
parray[:] =
更改为parray =
,这是不等价的。前者在元素的基础上分配parray
的内容,如果parray
的类型与赋值的右侧不同,这是一个重要的区别。你知道吗考虑以下两种情况:
相关问题 更多 >
编程相关推荐