numpy使用
一、np.random
在python数据分析的学习和应用过程中,经常需要用到numpy的随机函数,由于随机函数random的功能比较多
np.random.rand():rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1,如:构造一个3*4的随机数二维矩阵
import numpy as np np.random.rand(3,4) ''' [ [0.70012799 0.49939184 0.77621113 0.17695425] [0.47841626 0.75552393 0.9530986 0.95578551] [0.6377073 0.82090994 0.08206589 0.05983002] ] ''' np.random.rand(3,4,5) ''' [[[0.60014868 0.85951926 0.49306041 0.30224236 0.7943514 ] [0.40475082 0.1187137 0.84394612 0.74372474 0.35996537] [0.3555313 0.9134652 0.64137736 0.23589597 0.83533445] [0.78739993 0.25946225 0.2448853 0.01645085 0.7752245 ]] [[0.59034985 0.05762904 0.89938701 0.88729505 0.80461143] [0.42468046 0.3289913 0.4740535 0.88746905 0.81706704] [0.4217478 0.00604856 0.29234159 0.96485918 0.78208513] [0.36771675 0.0077454 0.15152365 0.32922038 0.29908242]] [[0.00252579 0.82497454 0.18105991 0.24632329 0.52462868] [0.60844183 0.30944412 0.6481987 0.94634654 0.75934241] [0.61328974 0.12232515 0.15702142 0.75872478 0.39437735] [0.96049556 0.75978279 0.38059127 0.37746655 0.32977045]]] '''
二、np.loadtxt()
np.loadtxt()可以用来读取文件,主要是txt文件,并且文本内容必须是数值
'''test.txt: 1, 2, 3, 4 2, 3, 4, 5 3, 4, 5, 6 4, 5, 6, 7 ''' np.loadtxt('test.txt', delimiter=',') ''' [[1. 2. 3. 4.] [2. 3. 4. 5.] [3. 4. 5. 6.] [4. 5. 6. 7.]] ''' '''test.txt A, B, C, D 1, 2, 3, 4 2, 3, 4, 5 3, 4, 5, 6 4, 5, 6, 7 ''' np.loadtxt('test.txt',delimiter=',', skiprows=1, dtype=int)#跳过第一行,如果1改为2,则跳过前两行,dtype指定了数据类型 ''' [[1 2 3 4] [2 3 4 5] [3 4 5 6] [4 5 6 7]] ''' ''' #A, B, C, D 1, 2, 3, 4 2, 3, 4, 5 3, 4, 5, 6 4, 5, 6, 7 ''' np.loadtxt('test.txt',delimiter=',', skiprows=1, dtype=int, comments='#')#跳过#行 ''' [[1 2 3 4] [2 3 4 5] [3 4 5 6] [4 5 6 7]] '''
三、np.linspace()[:, np.newaxis]
#np.newaxis的功能是插入新维度,看下面的例子: a=np.array([1,2,3,4,5]) print(a.shape) print(a) ''' (5,) [1 2 3 4 5] 可以看出a是一个一维数组 ''' x_data=np.linspace(-1,1,300)[:,np.newaxis] a=np.array([1,2,3,4,5]) b=a[np.newaxis,:] print(a.shape,b.shape) print(a) print(b) ''' 输出结果: (5,) (1, 5) [1 2 3 4 5] [[1 2 3 4 5]] ''' x_data=np.linspace(-1,1,300)[:,np.newaxis] a=np.array([1,2,3,4,5]) b=a[:,np.newaxis] print(a.shape,b.shape) print(a) print(b) ''' 输出结果 (5,) (5, 1) [1 2 3 4 5] [[1] [2] [3] [4] [5]] ''' ''' 可以看出np.newaxis分别是在行或列上增加维度,原来是(6,)的数组,在行上增加维度变成(1,6)的二维数组,在列上增加维度变为(6,1)的二维数组 '''
四、numpy的var std cov
np.var:表示方差,即各项-均值的平方求和后再除以N
std:表示标准差,是var的平方根
cov:协方差,与var类似,但是除以(N-1)
import numpy as np # 构建测试数据,均值为10 sc = [9.7, 10, 10.3, 9.7, 10, 10.3, 9.7, 10, 10.3] # 输出均值为10.0 print(np.mean(sc)) # 输出var, 即(0.09 + 0 + 0.09 + 0.09 + 0 + 0.09 + 0.09 + 0 + 0.09) = 0.54, 再0.54 / 9=0.06, 输出0.06 print(np.var(sc)) # 相当于0.06 开根号 print(np.std(sc)) # 0.54 / 8 = 0.0675 print(np.cov(sc))
五、np.argmax()
这个函数可以用来求一个序列的最大值,比如面试官给你一个列表,让你求最大值,除了遍历之外,可以调用这个函数来求,这个函数返回的是最大值索引
import numpy as np list_1 = [4,5,6,9,3,6,8,9] np.argmax(list_1) #3
六、np.random.multivariate_normal()
#用于根据实际情况生成一个多元正态分布矩阵 import numpy as np u1 = [5,35] sigma = np.matrix([[30,0],[0,30]]) print(np.random.multivariate_normal(u1, sigma,1)) #[[ 6.34077584 40.81904151]]
七、np.linalg
import numpy as np #np.linalg.inv():矩阵求逆 #np.linalg.det():矩阵求行列式(标量)
八、np.unpackbits:可以把整数转化成2进制数
import numpy as np binary = np.unpackbits(np.array( [range(4)], dtype=np.uint8 ).T, axis=1) ''' [ [0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 1] [0 0 0 0 0 0 1 0] [0 0 0 0 0 0 1 1] ] ''' binary_reverse = np.fliplr( binary )#左右翻转 ''' [ [0 0 0 0 0 0 0 0] [1 0 0 0 0 0 0 0] [0 1 0 0 0 0 0 0] [1 1 0 0 0 0 0 0] ] '''