2014-01-17 131 views
0

我有2个numpy的阵列MATLAB阵列倍增到Python

[a] = [[1] [2] [3]] 
[b] = [[4] [5] [6]] 

我想转换MATLAB线到Python

A = a*b'; 

我怎么会在Python做到这一点,并在MATLAB什么表示?

+0

的'''运营商是在MATLAB中置运算符。见http://www.mathworks.com/help/dsp/ref/transpose.html – jayelm

+1

一个有用的链接... [NUM用于Matlab用户](http://wiki.scipy.org/NumPy_for_Matlab_Users) – atomh33ls

回答

3

使用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 
+0

如果我得到错误ValueError:矩阵不对齐 – sam

+0

@sam,然后向我们展示您的代码,这会产生错误 – zhangxaochen

+0

我已粘贴到此处:http://pastebin.com/XueqyUcB – sam

1

需要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)