python之numpy学习02

来源:互联网 发布:javascript join函数 编辑:程序博客网 时间:2024/06/07 04:52
# -*- coding: utf-8 -*-"""Created on Sun May 14 21:16:22 2017@author: Administrator"""import numpy as np#numpy ndarray 计算全部元素的和、按行求和,按列求和。a = np.arange(20).reshape(4, 5)print ("a:")print (a)print("sum of all elements in a:" + str(a.sum()))print ("maximum element in a: " + str(a.max()))print ("minimum element in a: " + str(a.min()))print ("maximum element in each row of a: " + str(a.max(axis=1)))print ("minimum element in each column of a: " + str(a.min(axis = 0)))#Numpy同时提供了数组、矩阵对象(matrix)#矩阵对象和数组对象两点差别:#矩阵是二维的;矩阵的‘*’操作符进行的是矩阵乘法,乘号左边的矩阵列和乘号右侧的矩阵行要相等。#而在数组中的‘*’操作符进行的是每一元素的对应相乘,乘号两侧的数组每一维大小需要一致。#数组可以通过asmatrix或者mat转换为矩阵。print('---------------------------------------')a = np.arange(20).reshape(4, 5)a = np.asmatrix(a)print (type(a))b = np .matrix('1.0 2.0;3.0 4.0')print (type(b))#矩阵乘法, arange(起始,终止,步长)b = np.arange(2, 45, 3).reshape(5, 3)b = np.mat(b)print (b)print(type(b))#指定一维数组的长度x = np.linspace(0, 2, 9)print (x)print (type(x))#矩阵乘法print ("matrix a:")print (a)print ("matrix b:")print (b)print ("matrix c:")c = a * bprint (c)#数组元素的访问#数组和矩阵元素的访问可通过下标进行, 以下均以二维数组(或矩阵)为例:a = np.array([[3.2, 1.5], [2.5, 4]])print (a[0][1])print (a[0, 1])#通过下标访问来修改数组元素的值b = aa[0][1] = 2.0print ("a:")print (a)print ("b:")print (b)#上面的b是指向a的内容所在的地址,真正的复制使用copya = np.array([[3.2, 1.5], [2.5, 4]])b = a.copy()a[0][1] = 2.0print ("a:")print (a)print ("b:")print (b)print ("a type:" + str(type(a)) +"\nb type:"+ str(type(b)))#将a指向其他的地址上,b仍然在原来的地址上a = np.array([[3.2, 1.5], [2.5, 4]])b = aa = np.array([[2, 1], [9, 3]])print ("a:")print (a)print ("b:")print (b)a = np.arange(20).reshape(4, 5)print ("a:")print(a)print ("the 2nd and 4th column of a:")print (a[:,[0,1,3]])print (a[:, 0])print('---------------------------------------')#在单行单列上,取出满足某些条件的元素print (a[:, 2][a[:,0]> 5])#使用where函数查找特定值在数组中的位置print(a)loc = np.where(a==11)print (loc)print (a[loc[0][0], loc[1][0]])#数组操作a = np.random.rand(2, 4)print ("a:")print (a)a = np.transpose(a)print ("a is an array, by using transpose(a):")print (a)b = np.random.rand(2, 4)b = np.mat(b)print ("b:")print (b)print ("b is a matrix, by using b.T:")print (b.T)#矩阵求逆import numpy.linalg as nlga = np.random.rand(2, 2)a = np.mat(a)print ("a:")print (a)ia = nlg.inv(a)print ("inverse of a:")print (ia)print ("a* inv(a)")print (a*ia)#求特征值和特征向量a = np.random.rand(3,3)print("a:")print (a)eig_value, eig_vector = nlg.eig(a)print ("eigen value:")print (eig_value)print ("eigen vector:")print (eig_vector)#按列拼接两个向量成一个矩形a = np.array((1, 2, 3))b = np.array((2, 3, 4))print (np.column_stack((a, b)))print('---------------------------------------')a = np.random.rand(2, 2)b = np.random.rand(2, 2)print ("a:")print (a)print ("b:")print (b)c = np.hstack([a, b])d = np.vstack([a, b])print ("horizontal stacking a and b:")print (c)print ("vertical stacking a and b:")print (d)#缺失值, 通过isnan判断a = np.random.rand(2, 2)a[0, 1] = np.nanprint (np.isnan(a))print(np.nan_to_num(a))

输出:

a:[[ 0  1  2  3  4] [ 5  6  7  8  9] [10 11 12 13 14] [15 16 17 18 19]]sum of all elements in a:190maximum element in a: 19minimum element in a: 0maximum element in each row of a: [ 4  9 14 19]minimum element in each column of a: [0 1 2 3 4]---------------------------------------<class 'numpy.matrixlib.defmatrix.matrix'><class 'numpy.matrixlib.defmatrix.matrix'>[[ 2  5  8] [11 14 17] [20 23 26] [29 32 35] [38 41 44]]<class 'numpy.matrixlib.defmatrix.matrix'>[ 0.    0.25  0.5   0.75  1.    1.25  1.5   1.75  2.  ]<class 'numpy.ndarray'>matrix a:[[ 0  1  2  3  4] [ 5  6  7  8  9] [10 11 12 13 14] [15 16 17 18 19]]matrix b:[[ 2  5  8] [11 14 17] [20 23 26] [29 32 35] [38 41 44]]matrix c:[[ 290  320  350] [ 790  895 1000] [1290 1470 1650] [1790 2045 2300]]1.51.5a:[[ 3.2  2. ] [ 2.5  4. ]]b:[[ 3.2  2. ] [ 2.5  4. ]]a:[[ 3.2  2. ] [ 2.5  4. ]]b:[[ 3.2  1.5] [ 2.5  4. ]]a type:<class 'numpy.ndarray'>b type:<class 'numpy.ndarray'>a:[[2 1] [9 3]]b:[[ 3.2  1.5] [ 2.5  4. ]]a:[[ 0  1  2  3  4] [ 5  6  7  8  9] [10 11 12 13 14] [15 16 17 18 19]]the 2nd and 4th column of a:[[ 0  1  3] [ 5  6  8] [10 11 13] [15 16 18]][ 0  5 10 15]---------------------------------------[12 17][[ 0  1  2  3  4] [ 5  6  7  8  9] [10 11 12 13 14] [15 16 17 18 19]](array([2], dtype=int64), array([1], dtype=int64))11a:[[ 0.13378024  0.12118504  0.81883353  0.57752247] [ 0.7774044   0.07725228  0.79392817  0.68216484]]a is an array, by using transpose(a):[[ 0.13378024  0.7774044 ] [ 0.12118504  0.07725228] [ 0.81883353  0.79392817] [ 0.57752247  0.68216484]]b:[[ 0.09190121  0.49461086  0.32441392  0.36051032] [ 0.08294519  0.98723508  0.27996493  0.20307041]]b is a matrix, by using b.T:[[ 0.09190121  0.08294519] [ 0.49461086  0.98723508] [ 0.32441392  0.27996493] [ 0.36051032  0.20307041]]a:[[ 0.7744847   0.60003287] [ 0.96965063  0.82703688]]inverse of a:[[ 14.08797397 -10.22112507] [-16.5172958   13.1927857 ]]a* inv(a)[[  1.00000000e+00  -8.88178420e-16] [  0.00000000e+00   1.00000000e+00]]a:[[ 0.75267716  0.96519622  0.36316502] [ 0.00269269  0.60320442  0.51878785] [ 0.91322292  0.28138496  0.93459398]]eigen value:[ 1.77140763+0.j          0.25953397+0.50413241j  0.25953397-0.50413241j]eigen vector:[[-0.57969390+0.j         -0.36351645+0.4711016j  -0.36351645-0.4711016j ] [-0.33183110+0.j         -0.29100368-0.43056631j -0.29100368+0.43056631j] [-0.74420636+0.j          0.61306492+0.j          0.61306492-0.j        ]][[1 2] [2 3] [3 4]]---------------------------------------a:[[ 0.79608012  0.11640033] [ 0.85905787  0.77692935]]b:[[ 0.95440984  0.59138443] [ 0.08498267  0.21850557]]horizontal stacking a and b:[[ 0.79608012  0.11640033  0.95440984  0.59138443] [ 0.85905787  0.77692935  0.08498267  0.21850557]]vertical stacking a and b:[[ 0.79608012  0.11640033] [ 0.85905787  0.77692935] [ 0.95440984  0.59138443] [ 0.08498267  0.21850557]][[False  True] [False False]][[ 0.92392922  0.        ] [ 0.37162311  0.22679525]]

参考

0 0
原创粉丝点击