Python矩阵乘法3d数组

Python矩阵乘法3d数组,python,matrix,Python,Matrix,我试图用数值方法求解偏微分方程,在此过程中,我遇到了类似于3维空间的三重嵌套for循环的问题。这个构造嵌套在另一个时间循环中,因此您可以想象,对于足够大的节点数,计算会花费很长时间。代码块如下所示 for jy in range(0,cy-1): for jx in range(0,cx-1): for jz in range(0,cz-1): T[n+1,jx,jy,jz] = T[n,jx,jy,jz] + s*

我试图用数值方法求解偏微分方程,在此过程中,我遇到了类似于3维空间的三重嵌套for循环的问题。这个构造嵌套在另一个时间循环中,因此您可以想象,对于足够大的节点数,计算会花费很长时间。代码块如下所示

    for jy in range(0,cy-1):
        for jx in range(0,cx-1):
            for jz in range(0,cz-1):
                T[n+1,jx,jy,jz] = T[n,jx,jy,jz] + s*(T[n,jx-1,jy,jz] - 2*T[n,jx,jy,jz] + T[n,jx+1,jy,jz]) + s*(T[n,jx,jy-1,jz] - 2*T[n,jx,jy,jz] + T[n,jx,jy+1,jz]) + s*(T[n,jx,jy,jz-1] - 2*T[n,jx,jy,jz] + T[n,jx,jy,jz+1]) 
一开始可能看起来很吓人,但其实很简单。我有一个三维矩阵,表示一个固体块体材料,其中每个点表示当前温度。迭代计算每个点的下一个温度是在考虑该点下的每个点的情况下计算的-总共so 6。在一维固体的情况下,解只是一个简单的矩阵乘法。有没有可能用一个简单的矩阵解来表示上面的3环系统,比如1D情况


致以最良好的祝愿

使用numpy,您可以轻松执行这些矩阵运算

e、 3x3矩阵的g

将numpy作为np导入

T=np.随机.随机((3,3,3))


T=T*T-2*T。。。等等。

首先,你需要更加小心地使用术语。“矩阵”是一个二维数字数组。所以你说的是一个数组。Numpy,或者更好的是Scipy,有一种称为ndarray的数据类型。您需要非常小心地操作它们,因为尽管它们有时用于表示矩阵,但可以在二维数组上执行的操作在数学上对矩阵不合法

我强烈建议您使用@and not*来执行1-D或2-D矩阵的乘法,并确保添加代码来检查您所做的操作在数学上是否合法。作为一个简单的例子,Python允许您向nxn矩阵添加1xn或nx1向量,尽管这在数学上并不正确。它允许它的原因是,正如上面提到的,因为Python中没有真正的矩阵类型


很可能你可以重新设计你的问题,使用三维阵列,通过实验找到你想要执行的特定操作。请记住,线性代数的规则只是在Python中随意应用的。

看看有什么原因不使用numpy吗?