我有2个numpy的阵列MATLAB阵列倍增到Python
[a] = [[1] [2] [3]]
[b] = [[4] [5] [6]]
我想转换MATLAB线到Python
A = a*b';
我怎么会在Python做到这一点,并在MATLAB什么表示?
我有2个numpy的阵列MATLAB阵列倍增到Python
[a] = [[1] [2] [3]]
[b] = [[4] [5] [6]]
我想转换MATLAB线到Python
A = a*b';
我怎么会在Python做到这一点,并在MATLAB什么表示?
使用numpy.dot
:
In [7]: a=np.array([1,2,3])
In [8]: b=np.array([4,5,6,])
In [9]: a.dot(b)
Out[9]: 32
,如果你想要的结果仍然是一个矩阵,使用numpy.matrix
:
In [239]: ma=matrix([1,2,3])
In [240]: ma
Out[240]: matrix([[1, 2, 3]])
In [241]: mb=matrix([4,5,6])
In [242]: mb.T
Out[242]:
matrix([[4],
[5],
[6]])
In [243]: ma*mb.T
Out[243]: matrix([[32]])
更新:
如果你的阵列是二维数组,这在打印a.shape
时形状(m,n),应该使用转置第二个数组,否则你会得到ValueError: objects are not aligned
:
In [30]: a
Out[30]: array([[1, 2, 3]])
In [31]: b
Out[31]: array([[4, 5, 6]])
In [32]: a.dot(b.T)
Out[32]: array([[32]])
In [33]: a.dot(b)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-33-9a1f5761fa9d> in <module>()
----> 1 a.dot(b)
ValueError: objects are not aligned
如果我得到错误ValueError:矩阵不对齐 – sam
@sam,然后向我们展示您的代码,这会产生错误 – zhangxaochen
我已粘贴到此处:http://pastebin.com/XueqyUcB – sam
需要transpose
第一阵列:
import numpy as np
a = np.array([[1], [2], [3]])
b = np.array([[4], [5], [6]])
np.dot(a.T, b)
或第二阵列:
np.dot(a, b.T)
的'''运营商是在MATLAB中置运算符。见http://www.mathworks.com/help/dsp/ref/transpose.html – jayelm
一个有用的链接... [NUM用于Matlab用户](http://wiki.scipy.org/NumPy_for_Matlab_Users) – atomh33ls