#-*- coding:utf-8 -*- import numpy as np import copy import math import matplotlib.pyplot as plt # 深度copy a = np.array([1,2,3,4,5,5]) c = [1,2,3,4,5] a_copy = copy.deepcopy(a) print(a_copy) # 生成数据,左闭右开,从1到10 ,步长为0.5 a = np.arange(1,10,0.5) print(a) # 从1到10产生10个数,包不包括右端点,底数可以设为2 b = np.linspace(1,10,10,endpoint=True) # 以2为底数,生成2的等比数列 c = np.logspace(0,9,10,base=2) print(b,c) # 把字符转成int型,输出ASCII码 s = 'abcd' g = np.fromstring(s,dtype=np.int8) print(g) # 列表切片 a = [1,2,3,4,5,6,7,8,9] print(a[:2]) print(a[1:9:2]) #从第1个到第9个,步长为2 a[1:4] = 5,8,9 print(a) # 构建b新的数组,和a无关 a = np.logspace(0,9,10,base=2) print(a) i = np.arange(0,10,2) print(i) b = a[i] print(b) b[2] = 55 print(b) print(a) # 输出a中的值是否大于0.5 a = np.random.rand(10) print(a) print(a>0.5) # 把a中大于0.5的值赋值给b b = a[a>0.5] print(b) # 把a中大于0.5的数强制变成0.5 a[a>0.5] = 0.5 print(a) # b并不受影响 print(b) # 生成0,10,20,30,40,50 a = np.arange(0,60,10) print(a) # 变成列[[0],[10]] a = a.reshape(-1,1) print(a) # 生成 012345 c = np.arange(6) print(c) # 生成一个6*6矩阵,一行对应一行价格 f = a + c print(f) # 合并代码 a = np.arange(0,60,10).reshape(-1,1)+np.arange(6) print(a) # 取三个元素(0,2),(1,3) print(a[[0,1,2],[2,3,4]]) print(a[4,[2,3,4]]) i = np.array([True,False,True,False,False,True]) # 按i取行 print(a[i]) # 从第3列里按i取元素 print(a[i,3]) # 元素去重 a = [1,1,5,6,8,9,4,2,3,4] b = np.unique(a) print(b) # 但是对于二维,会拉成一维再去重 c = np.array([[1,5],[1,4],[1,5]]) print(np.unique(c)) # 二维去重 p = np.array(list(set([tuple(t) for t in c]))) print(p) # stack函数,堆叠函数 a = np.arange(1,10).reshape(3,3) b = np.arange(21,30).reshape(3,3) c = np.arange(101,120).reshape(3,3) print(a) print(b) print(c) # 按矩阵堆叠 print(np.stack((a,b,c),axis=0)) # 按行堆叠 print(np.stack((a,b,c),axis=1)) # 按列堆叠 print(np.stack((a,b,c),axis=1)) a = np.arange(1,10).reshape(3,3) print(a) # 每个元素加10 b = a + 10 print(b) # 矩阵乘法 print(np.dot(a,b)) # 对应元素相乘 print(a*b) # 画图 miu = 0 sigma = 1 x = np.linspace(miu-3*sigma,miu+3*sigma,52) y = np.exp(-(x - miu) ** 2 / (2 * sigma ** 2)) / (math.sqrt(2 * math.pi) * sigma) plt.figure(facecolor='white') # 用-线绘制,用o绘制,线粗,点大小 plt.plot(x, y,'r-', x, y,'go',linewidth=2, markersize=8) plt.ylabel('x',fontsize=15) # 纵坐标名 plt.xlabel('y',fontsize=15) #横坐标名 plt.title('高斯分布函数',fontsize=18) plt.grid(True) #背景格子 plt.show() # 损失函数,logistic损失,SVM损失,0/1损失 plt.figure(figsize=(10,8)) # 指定图片大小 x = np.linspace(-2,3,1001,dtype=np.float) y_logistic = np.log(1 + np.exp(-x)) / math.log(2) y_boost = np.exp(-x) y_01 = x < 0 y_hinge = 1.0 - x y_hinge[y_hinge<0] = 0 plt.plot(x,y_logistic,'r-',label='logistic') plt.plot(x,y_boost,'g--',label='boost') plt.plot(x,y_01,'b-',label='01') plt.plot(x,y_hinge,'m-',label='hinge') plt.grid(True) plt.legend(loc='upper right') plt.savefig('1.png') plt.show()