python学习记录一

#-*- 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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值