1、在python环境中导入numpy包,并命名为np
[python] view plain copy
- >>> import numpy as np
2、查看numpy版本和配置信息
[python] view plain copy
- >>> print np.__version__
- >>> np.__config__.show()
3、创建零向量,zeros函数
[python] view plain copy
- >>> z=np.zeros((2,3))
- >>> print z
- [[ 0. 0. 0.]
- 0. 0. 0.]]
4、将上面的零向量的第二行第三列元素置为1。注意python中行列下标是从0开始。
[python] view plain copy
- >>>z[1,2]=1
- >>> print z
- [[ 0. 0. 0.]
- 0. 0. 1.]]
5、arange函数,创建一个在给定范围的向量。
[python] view plain copy
- >>> z=np.arange(1,101) %1~100范围,注意不包括101
- >>> print z
6、reshape函数,将array变形为矩阵
[python] view plain copy
- >>> Z = np.arange(9).reshape(3,3)
- >>> print Z
- [[0 1 2]
- 3 4 5]
- 6 7 8]]
7、nonzero函数,寻找非0元素的下标
[python] view plain copy
- >>> nz=np.nonzero([1,2,3,0,0,4,0])
- >>> nz
- (array([0, 1, 2, 5]),)
8、eye函数,生成单位向量
[python] view plain copy
- >>> z=np.eye(3)
- >>> print z
- [[ 1. 0. 0.]
- 0. 1. 0.]
- 0. 0. 1.]]
9、diag函数,diagonal对角线。
[python] view plain copy
- >>> z=np.diag([1,2,3,4],k=0) %k=0,以[1,2,3,4]为对角线
- >>> print z
- [[1 0 0 0]
- 0 2 0 0]
- 0 0 3 0]
- 0 0 0 4]]
- >>> z=np.diag([1,2,3,4],k=1) %k=1,[1,2,3,4]在对角线上一行
- >>> print z
- [[0 1 0 0 0]
- 0 0 2 0 0]
- 0 0 0 3 0]
- 0 0 0 0 4]
- 0 0 0 0 0]]
- >>> z=np.diag([1,2,3,4],k=-1) %k=-1,[1,2,3,4]在对角线下一行
- >>> print z
- [[0 0 0 0 0]
- 1 0 0 0 0]
- 0 2 0 0 0]
- 0 0 3 0 0]
- 0 0 0 4 0]]
10、random模块的random函数,生成随机数
[python] view plain copy
- >>> Z = np.random.random((3,3))
- >>> print Z
- [[ 0.95171484 0.61394126 0.38864802]
- 0.41943918 0.9398714 0.31608202]
- 0.9993507 0.91717093 0.73002723]]
11、创建一个8*8的“棋盘”矩阵。
[python] view plain copy
- >>> z=np.zeros((8,8),dtype=int)
- >>> z[1::2,::2]=1 %1、3、5、7行&&0、2、4、6列的元素置为1
- >>> print z
- [[0 0 0 0 0 0 0 0]
- 1 0 1 0 1 0 1 0]
- 0 0 0 0 0 0 0 0]
- 1 0 1 0 1 0 1 0]
- 0 0 0 0 0 0 0 0]
- 1 0 1 0 1 0 1 0]
- 0 0 0 0 0 0 0 0]
- 1 0 1 0 1 0 1 0]]
- >>> z[::2,1::2]=1
- >>> print z
- [[0 1 0 1 0 1 0 1]
- 1 0 1 0 1 0 1 0]
- 0 1 0 1 0 1 0 1]
- 1 0 1 0 1 0 1 0]
- 0 1 0 1 0 1 0 1]
- 1 0 1 0 1 0 1 0]
- 0 1 0 1 0 1 0 1]
- 1 0 1 0 1 0 1 0]]
12、min()、max()函数
[python] view plain copy
- >>> z=np.random.random((10,10))
- >>> zmin,zmax=z.min(),z.max()
- >>> print zmin,zmax
- 0.014230501632 0.99548760299
13、函数tile(A,reps),reps即重复的次数,不仅可以是数字,还可以是array。比如构造棋盘矩阵:
[python] view plain copy
- >>> z=np.tile(np.array([[0,1],[0,1]]),(4,4))
- >>> print z
- [[0 1 0 1 0 1 0 1]
- 0 1 0 1 0 1 0 1]
- 0 1 0 1 0 1 0 1]
- 0 1 0 1 0 1 0 1]
- 0 1 0 1 0 1 0 1]
- 0 1 0 1 0 1 0 1]
- 0 1 0 1 0 1 0 1]
- 0 1 0 1 0 1 0 1]]
14、归一化,将矩阵规格化到0~1,即最小的变成0,最大的变成1,最小与最大之间的等比缩放。
[python] view plain copy
- >> Z = np.random.random((5,5))
- >>> Zmax,Zmin = Z.max(), Z.min()
- >>> Z = (Z - Zmin)/(Zmax - Zmin)
- >>> print Z
- [[ 0. 0.32173291 0.17607851 0.6270374
- 0.95000808]
- 0.49153473 0.70465605 0.61930085 0.00303294 1.
- ]
- 0.4680561 0.88742782 0.29899683 0.80704789
- 0.12300414]
- 0.05094248 0.23065875 0.82776775 0.07873239
- 0.50644422]
- 0.27417053 0.78679222 0.517819 0.5649124 0.4716856
- ]]
15、矩阵点乘
[python] view plain copy
- >>> z=np.dot(np.ones((5,3)),np.ones((3,2)))
- >>> print z
- [[ 3. 3.]
- 3. 3.]
- 3. 3.]
- 3. 3.]
- 3. 3.]]
16、矩阵相加,5*5矩阵+1*5的向量,相当于每一行都加上1*5矩阵
[python] view plain copy
- >>> Z = np.zeros((5,5))
- >>> Z += np.arange(5)
- >>> print Z
- [[ 0. 1. 2. 3. 4.]
- 0. 1. 2. 3. 4.]
- 0. 1. 2. 3. 4.]
- 0. 1. 2. 3. 4.]
- 0. 1. 2. 3. 4.]]
17、linspace(线性等分向量(linear space)函数,在给定区间中生成均匀分布的给定个数。
函数原型 linspace(start, stop, num=50, endpoint=True, retstep=False)
[python] view plain copy
- >>> Z = np.linspace(0,10,11,endpoint=True, retstep=False)
- >>> print Z
- [ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
生成0~10之间均匀分布的11个数,包括0和1。
若endpoint=False,则10不包括在里面。
若retstep=False,会同时返回均匀区间中每两个数的间隔。
18、sort函数。调用random模块中的random函数生成10个随机数,然后sort排序。
[python] view plain copy
- >>> Z = np.random.random(10)
- >>> Z.sort()
- >>> print Z
- [ 0.15978787 0.28050494 0.35865916 0.40047826 0.45141311
- 0.4828367 0.66133575 0.66775779 0.69278544 0.98095989]
19、allclose函数,判断两个array在误差范围内是否相等
函数原型allclose(a, b, rtol=1e-05, atol=1e-08),若absolute(a - b) <= (atol + rtol * absolute(b))则相等。
[python] view plain copy
- A = np.random.randint(0,2,5)
- B = np.random.randint(0,2,5)
- equal = np.allclose(A,B)
- print equal
20、mean函数,求平均值
[python] view plain copy
- >>> Z = np.random.random(30)
- >>> m = Z.mean()
- >>> print m
- 0.362299527973
- >>> A = np.random.randint(0,2,5)
- >>> B = np.random.randint(0,2,5)
- >>> equal = np.allclose(A,B)
- >>> print equal
- False
注:randint(min,max,num)生成大小为num的array,数值范围min~max