如何用矢量化 numpy 替代方案替换嵌套 for 循环?

发布于 01-10 09:58 字数 932 浏览 2 评论 0原文

给定两个已知的 2D 数组(维度是时间和位置),dhdt_arrdTsdt_arr,如何比使用嵌套 for 循环更快地生成其他 2D 数组?

我想要生成的数组的命名如下,并且已像已知数组一样进行设置:

dmdt_arr = np.zeros_like(dhdt_arr) #change in mass holdup
T_arr = np.zeros_like(dhdt_arr) # fluid temperature
m_hold_arr = np.zeros_like(dhdt_arr) # mass hold up
U_arr = np.zeros_like(dhdt_arr) # heat transfer coefficient array

我用来生成上述数组的嵌套 for 循环(假设代数是正确的,常量已知,并且我使用的函数是也已知)。我只是在寻找一种用更快的东西替换这个结构的方法,比如 numpy 矢量化方法):

for i in range(time.shape[0]): #iteratung through 2D array time x #positions
    for j in range(n): #yep

        T = temperature(h_arr[j,i],P)

        dmdt_arr[j, i] = dhdt_arr[j, i] * dpdh(h_arr[j, i], P) * V
        T_arr[j,i] = T
        m_hold_arr[j, i] = mass(h_arr[j, i], P)
        U_arr[j,i] = mAlumina*CP_ALUMINA*dTsdt_arr[j,i]/(sa*(T_arr[j,i] - Ts_arr[j,i]))

如何以比嵌套 for 循环更快的方式生成这些相同的数组?

Given two known 2D arrays (dimensions are time and position), dhdt_arr and dTsdt_arr, how can I generate some other 2D arrays from these faster than using nested for loops?

The arrays I would like to generate are named below, and have been setup like the known arrays:

dmdt_arr = np.zeros_like(dhdt_arr) #change in mass holdup
T_arr = np.zeros_like(dhdt_arr) # fluid temperature
m_hold_arr = np.zeros_like(dhdt_arr) # mass hold up
U_arr = np.zeros_like(dhdt_arr) # heat transfer coefficient array

The nested for loop I am using to generate the above arrays (assume the algebra is correct, the constants are known, and the functions I used are also known). I am just looking for a way to replace this structure with something faster, like a numpy vectorized approach):

for i in range(time.shape[0]): #iteratung through 2D array time x #positions
    for j in range(n): #yep

        T = temperature(h_arr[j,i],P)

        dmdt_arr[j, i] = dhdt_arr[j, i] * dpdh(h_arr[j, i], P) * V
        T_arr[j,i] = T
        m_hold_arr[j, i] = mass(h_arr[j, i], P)
        U_arr[j,i] = mAlumina*CP_ALUMINA*dTsdt_arr[j,i]/(sa*(T_arr[j,i] - Ts_arr[j,i]))

How can these same arrays be generated in a way that is faster than a nested for loop?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文