莫烦Python
numpy学习笔记
基本用法
a = np.array([1,2 ,3])
# [1 2 3]
a = np.array([[1,2 ,3],[4,5,6]])
# [[1 2 3]
# [4 5 6]]
a = np.array([1,2 ,3],dtype=np.int)
# int32默认32
a = np.zeros((3,4),dtype=np.int)
# [[0 0 0 0]
# [0 0 0 0]
# [0 0 0 0]]
a = np.ones((3,4),dtype=np.int)
# [[1 1 1 1]
# [1 1 1 1]
# [1 1 1 1]]
a = np.empty((3,4)) 生成特别小的数
# [[6.9531115e-310 0.0000000e+000 0.0000000e+000 0.0000000e+000]
# [0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000]
# [0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000]]
a = np.arange(1,10,1) 从1到9,步长为1
# [1 2 3 4 5 6 7 8 9]
a = np.linspace(1,10,5) 从1到10之间的数的线段,分割成5段
# [ 1. 3.25 5.5 7.75 10. ]
a = np.linspace(1,10,6).reshape((2,3))
# [[ 1. 2.8 4.6]
# [ 6.4 8.2 10. ]]
基本运算1
a = np.array([10,20,30,40])
b = np.arange(4)
c = a - b
# [10 19 28 37]
c = a + b
# [10 21 32 43]
c = a*b
# [ 0 20 60 120]
c = b**2 # 求平方
# [0 1 4 9]
c = np.sin(a)
# [-0.54402111 0.91294525 -0.98803162 0.74511316]
a = np.array([[1,1],[0,1]])
b = np.arange(4).reshape((2,2))
c_dot = np.dot(a,b) #c_dot = a.dot(b)
# [[2 4]
# [2 3]]
a=np.random.random((2,4))
print(a)
print("sum=",np.sum(a))
print("min=",np.min(a))
print("max=",np.max(a))
# [[0.49968695 0.56296219 0.60491734 0.73709184]
# [0.58741404 0.72642106 0.37210879 0.34960239]]
# sum= 4.440204586253255
# min= 0.34960238546006206
# max= 0.7370918366615277
# 当axis的值为0的时候,将会以列作为查找单元, 当axis的值为1的时候,将会以行作为查找单元
print("sum=",np.sum(a,axis=1))
print("min=",np.min(a,axis=0))
print("max=",np.max(a,axis=1))
# [[0.52435925 0.34325065 0.58458481 0.26320022]
# [0.82602277 0.39915493 0.06400526 0.1963304 ]]
# sum= [1.71539495 1.48551335]
# min= [0.52435925 0.34325065 0.06400526 0.1963304 ]
# max= [0.58458481 0.82602277]
A = np.arange(2,14).reshape((3,4))
print(A)
# [[ 2 3 4 5]
# [ 6 7 8 9]
# [10 11 12 13]]
print(np.argmin(A))# 0
print(np.argmax(A))# 11
基本运算2
# 求平均
print(np.mean(A)) # 7.5
print(np.average(A)) # 7.5
print(A.mean()) # 7.5
# 求中位数
print(np.median(A)) # 7.5
# 累加
print(np.cumsum(A))
# [ 2 5 9 14 20 27 35 44 54 65 77 90]
# 累差
print(np.diff(A))
# [[1 1 1]
# [1 1 1]
# [1 1 1]]
# nonzero()函数,输出非零坐标
print(np.nonzero(A))
# (array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64),
# array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
# 排序
A = np.arange(14,2,-1).reshape((3,4))
print(A)
print(np.sort(A))
# [[14 13 12 11]
# [10 9 8 7]
# [ 6 5 4 3]]
# [[11 12 13 14]
# [ 7 8 9 10]
# [ 3 4 5 6]]
# 转置
A = np.arange(2,14).reshape((3,4))
print(A)
print(np.transpose(A)) # print(A.T)
# [[ 2 3 4 5]
# [ 6 7 8 9]
# [10 11 12 13]]
# [[ 2 6 10]
# [ 3 7 11]
# [ 4 8 12]
# [ 5 9 13]]
# clip(Array,Array_min,Array_max)函数
print(np.clip(A,5,9))
# [[5 5 5 5]
# [6 7 8 9]
# [9 9 9 9]]
矩阵合并
A = np.array([1,1,1])
B = np.array([2,2,2])
print(A) # [1 1 1]
print(B) # [2 2 2]
print(np.vstack((A,B))) # vertical stack
# [[1 1 1]
# [2 2 2]]
print(np.hstack((A,B))) # horizontal stack
# [1 1 1 2 2 2]
# np.newaxis()
print(A[np.newaxis,:])
# [[1 1 1]]
print(A[:,np.newaxis])
# [[1]
# [1]
# [1]]
# np.concatenate()
A = np.array([1,1,1])[:,np.newaxis]
B = np.array([2,2,2])[:,np.newaxis]
print(A)
# [[1]
# [1]
# [1]]
print(B)
# [[2]
# [2]
# [2]]
C = np.concatenate((A,B,B,A),axis=0)
# [[1]
# [1]
# [1]
# [2]
# [2]
# [2]
# [2]
# [2]
# [2]
# [1]
# [1]
# [1]]
C = np.concatenate((A,B,B,A),axis=1)
# [[1 2 2 1]
# [1 2 2 1]
# [1 2 2 1]]
矩阵分割
A = np.arange(12).reshape((3,4))
print(A)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
# 纵向分割
print(np.split(A,2,axis=1))
# [array([[0, 1],
# [4, 5],
# [8, 9]]),
# array([[ 2, 3],
# [ 6, 7],
# [10, 11]])]
#横向分割
print(np.split(A,3,axis=0))
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
# 不等量分割
print(np.array_split(A,3,axis=1))
# [array([[0, 1],
# [4, 5],
# [8, 9]]),
# array([[ 2],
# [ 6],
# [10]]),
# array([[ 3],
# [ 7],
# [11]])]
print(np.vsplit(A, 3)) #等于 print(np.split(A, 3, axis=0))
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
print(np.hsplit(A, 2)) #等于 print(np.split(A, 2, axis=1))
# [array([[0, 1],
# [4, 5],
# [8, 9]]),
# array([[ 2, 3],
# [ 6, 7],
# [10, 11]])]