Numpy arrays:
array&matrix
An array may be a vector (one-dimensional array)
>>> from numpy import *
>>> array([1, 2, 3, 4])
array([1, 2, 3, 4])
Or a matrix (a two-dimensional array)
>>> array([[1, 2], [3, 4]])
array([[1, 2],
[3, 4]])
A matrix is always two-dimensional
Numpy arrays赋值
引用拷贝:asmatrix() or mat() (from an array) or asarray()(from a matrix)
>>> a = array([1, 2, 3, 4])
>>> m = asmatrix(a) # Copy as reference
>>> a[0] = 1000
>>> m
matrix([[1000,2,3,4]])
值拷贝:matrix() or array()
>>> a = array([1, 2, 3, 4])
>>> m = matrix(a)
>>> a[0] = 1000
>>> m
matrix([[1, 2, 3, 4]])
ones((m,n)):生成m*n全1矩阵
zeros((m,n)):生成m*n全0矩阵
eye(n):生成对角线为1的对称方阵
求矩阵的逆:a.T或者b.H 这里a是array对象,b是matrix对象
a = array([[1,2],[3,4]])
b = mat([[1,2],[3,4]])
a可以用a[1][1]或a[1, 1]取出元素4
b只能用[1, 1]取出4,不能用[1][1]
如果a,b都是array对象:
矩阵相乘用dot(a,b)
a*b只是把矩阵对应的元素相乘
如果a,b都是matrix对象:
dot(a,b)和a*b都是矩阵相乘
multiply(a,b)是对应的矩阵元素相乘
Six advices from Hans Petter Langtangen
Section Optimization of Python code (Langtangen, 2005, p. 426+)
Avoid loops, use NumPy (see also my blog)
Avoid prefix in often called functions.
Plain functions run faster than class methods
Don’t use NumPy for scalar arguments
Use xrange instead of range (in Python < 3)
if-else is faster than try-except