处理广播而不丢失信息(2d数组和3d数组操作)

时间:2017-04-03 09:30:48

标签: python arrays numpy multidimensional-array numpy-broadcasting

我有一个SDF,它是一个2d numpy数组,也是一个3d数组的图像特征数组,它在第三维中有各种纹理。所以在我的等式中,我有这个:

    ux = np.sum(cv2.blur(phi0*txtre, (3, 3)))/np.sum(cv2.blur(phi0, (3, 3)))
    vx = np.sum(cv2.blur((1-phi0)*txtre, (3, 3)))/np.sum(cv2.blur((1-phi0), (3, 3)))
    a = (txtre - ux)**2
    b = (txtre - vx)**2
    dphidt = dirac(phi) * (cv2.blur((a - b), (3, 3)))

    phi += (dt * dphidt) #dt is just to maintain CFL condition

这里我有 phi0 ,它是SDF的重要部分,是2d数组, txtre 是3d数组。但是这条线给了我广播错误。

稍后我需要采用渐变并更新 phi (SDF),只需更改 phi dphidt 。那么如何处理所有广播?

此处 dirac 功能定义如下

    def dirac(p):
    out = np.abs(p) <= 0.5

0 个答案:

没有答案