我正在尝试将我拥有的一些Matlab代码转换为Python(使用numpy)。我有以下Matlab代码:
(1/x)*eye(2)
X只是1000000。据我了解,Matlab中的*表示矩阵乘法,而等效的是numpy中的.dot。所以在Python中,我有:
numpy.array([(1/x)]).dot(numpy.identity(2))
尝试运行numpy代码时,出现错误“形状(1,)和(2,2)不对齐:1(dim 0)!= 2(dim 0)”。
显然我听不懂。有人知道正确的numpy代码是什么吗?
最佳答案
由于x
是标量,因此如果在MATLAB中将矩阵乘以标量,它只会按该值缩放所有条目。无需矩阵乘法。
如果要在numpy
中实现相同的目的,请执行与MATLAB中相同的操作:
(1/x)*numpy.identity(2)
如果
x
是兼容尺寸的矩阵,则可以使用numpy.dot
:(1/x).dot(numpy.identity(2))
因此,在决定执行此操作之前,需要确保您知道
x
是什么。numpy
通过使用*
运算符执行逐元素乘法,因此,如果要进行实际的矩阵乘法,可以使用numpy.dot
。您将获得不兼容的尺寸,因为不可能在标量和矩阵之间进行真正的矩阵乘法。