我已经创建了一个小Python程序来将两个2乘2的矩阵相乘,但是我想知道它是否可以简化(特别是创建新数组)
python代码如下:
matA=[0]*2
matB=[0]*2
matC=[0]*2
matC[0]=[0]*2
matC[1]=[0]*2
# creating new arrays for multiplying two 2 by 2 matrices
# must be a more simple way
def multiply2by2matrices(a,b):
matC[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0]
matC[0][1]=a[0][0]*b[0][1]+a[0][1]*b[1][1]
matC[1][0]=a[1][0]*b[0][0]+a[1][1]*b[1][0]
matC[1][1]=a[1][0]*b[0][1]+a[1][1]*b[1][1]
print ((matC[0][0]),(matC[0][1]))
print ((matC[1][0]),(matC[1][1]))
matA[0]=[4,3]
matA[1]=[2,12]
matB[0]=[5,-2]
matB[1]=[6,3]
multiply2by2matrices(matA, matB)
任何想法都会受到极大的欢迎。在
不要手动执行。你正在重新发明轮子,而且已经有了非常好的轮子。在
纽比就是答案。在
文件:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.dot.html
干杯,p
除非您被要求只使用vanilla python,否则使用numpy要简单得多。您可以使用matrix类,也可以只使用2d数组和dot函数。例如:
产生:
^{pr2}$你绝对可以简化矩阵乘法并使之通用。诀窍是使用
zip
。当然还有其他方法,但我认为zip可能会产生一些更简洁的代码。 我没有测试以下内容,但我认为我的线性代数适合我。在如果不使用列表理解,则需要预先分配一个列表或在for循环之间使用append/extend。在
相关问题 更多 >
编程相关推荐