首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python矩阵乘法3d数组

Python矩阵乘法3d数组
EN

Stack Overflow用户
提问于 2018-07-27 04:40:36
回答 2查看 396关注 0票数 0

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

代码语言:javascript
复制
    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]) 

一开始可能看起来有点吓人,但其实很简单。我有一个三维矩阵,表示固体散装材料,其中每个点表示当前温度。迭代计算的每个点的下一个温度是考虑到该点下一个点的每个点--总共6个。在一维实体的情况下,解决方案只是一个简单的矩阵乘法。有没有可能用一个简单的矩阵解决方案来表示上面的三环系统,就像1D的情况一样?

诚挚的问候!

EN

回答 2

Stack Overflow用户

发布于 2018-07-27 05:51:47

使用numpy,你可以很容易地完成这些类型的矩阵运算,

例如,对于3x3矩阵

将numpy导入为np

T= np.random.random((3,3,3))

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

票数 0
EN

Stack Overflow用户

发布于 2018-07-27 09:55:58

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

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

很可能你可以重新制定你的问题,使用一个3-D数组,并通过实验找到你试图执行的特定操作。请记住,线性代数的规则只会在Python中随意应用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51547207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档