numpy中数组的运算基本分为数组与标量的运算和数组之间的运算(线性运算)。
一、数组和标量之间的运算
数组与标量之间的运算采用的是矢量化运算,它可以使我们不用编写循环函数就可以对每个元素进行运算,它的运算是元素级的。这种运算同R一样。
data1 = np.arange(1,10,1)
data2 = data1.reshape((3,3))
data2
Out[7]:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
data2*2
Out[8]:
array([[ 2, 4, 6],
[ 8, 10, 12],
[14, 16, 18]])
data2+data2
Out[9]:
array([[ 2, 4, 6],
[ 8, 10, 12],
[14, 16, 18]])
data2-data2
Out[10]:
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
1/data2
Out[11]:
array([[ 1. , 0.5 , 0.33333333],
[ 0.25 , 0.2 , 0.16666667],
[ 0.14285714, 0.125 , 0.11111111]])
二、数组间的线性运算
numpy.linalg提供了一组标准的矩阵分解运算以及平常的矩阵运算,比如乘积,求逆。numpy中矩阵的乘法不能采用*,*指的是不同数组中对应元素的乘积,这点同R是一致的。
示例:
(1)元素的相乘:
data2 * data2
Out[12]:
array([[ 1, 4, 9],
[16, 25, 36],
[49, 64, 81]])
(2)矩阵的相乘 :
data2.dot(data2)
Out[13]:
array([[ 30, 36, 42],
[ 66, 81, 96],
[102, 126, 150]])
Numpy.linalg线性运算:
from numpy.linalg import *
三、矩阵运算
numpy模块中有专门的矩阵对象numpy.matrix,对矩阵的运算均可通过这个类型来实现。
矩阵创建语法:numpy.matrix(data,dtype,copy)
data为ndarray对象或字符形式。这里的字符形式同Matlab中的字符形式相同:内部数据以字符串形式,换行用分号隔开,列之间用空格隔开。
x = np.matrix(data2) #数组转换为矩阵
y = np.matrix('1 2 3 ; 4 5 6 ; 7 8 9 ') #创建Matlab风格的矩阵
矩阵运算基本函数:
以上就是基本的数组运算函数了,更详细的矩阵运算方法,请查阅参考资料5.
参考文献
1.Python 数据分析基础包:Numpy
http://my.oschina.net/lionets/blog/276574
2.NumPy-快速处理数据
http://old.sebug.net/paper/books/scipydoc/numpy_intro.html
3.Python for Data Analysis(利用Python进行数据分析 )
4.ndarray对象
http://hyry.dip.jp/tech/book/page/scipy/numpy_ndarray.html
5. Numpy中矩阵对象(matrix)