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] ]
'''

 

九、np.array和np.asarray()区别

posted @ 2018-07-17 17:49  1直在路上1  阅读(353)  评论(0编辑  收藏  举报