我对python来说还比较陌生,想知道为什么这段代码无法正常工作。我为使用图片而道歉,但是由于互联网问题,我无法复制和粘贴代码。
为简要说明,我尝试实现一种光谱方法,其中A是我的微分矩阵,q是我的解矩阵(nx,nt),并通过考虑每一列来进行时间步长。
错误:
q [:,t + 1] =倒置forgold np.array(q [:,t])+倒置dt np.array(nl)
q[:, t+1]
索引2d数组(可能不是np.matrix
,它更像是MATLAB)。此索引将尺寸数减少1,因此错误消息中的形状为(220)。
错误消息显示RHS为(220,220)。该形状可能来自inverted
和forgold
。 np.array(q[:,t])
为1d。将(220,220)乘以(220,)是可以的,但是您不能将该正方形数组放入一维插槽中。
错误行中np.array
的两种用法都是多余的。他们的论据已经是ndarray
。
关于循环,可能有必要。看起来q[:,t+1]
是q [:,t], a serial, rather than parallel operation. Those are harder to render as 'vectorized' (unless you can use
cumsum之类的函数)。
请注意,在numpy
中,*
是元素乘法,即MATLAB的.*
。 np.dot
和@
用于矩阵乘法。
q[:,t+1]= invert@q[:,t]
会工作