机器学习技术(一)——python基础超详解

news2024/12/23 13:58:54

机器学习技术(一)——python基础超详解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DJuKhLvl-1688009467468)(D:\Administrator\Downloads\机器学习技术.png)]

文章目录

  • 机器学习技术(一)——python基础超详解
      • 0、引言
      • 1、基础概念
        • **:snake:变量**
        • **:snake:注释**
        • **:snake:输入 输出**
      • 2、数据类型
        • **:snake:数值类型**
        • **:snake:运算符**
        • **:snake:字符串类型**
        • **:snake:列表**
        • **:snake:元组**
        • **:snake:字典**
        • **:snake:集合**
      • 3、选择、循环与函数
        • **:snake:if....elif...else**
        • **:snake:try:… except Exception**
        • :snake:循环语句
        • :snake:函数
      • 4、对象
        • **:snake:创建类**
        • **:snake:访问属性**
        • **:snake:类的继承**
      • 5、深拷贝和浅拷贝
        • :snake:浅拷贝
        • :snake:深拷贝
      • 6、标准库
        • :snake:sys
        • :snake:os
        • :snake:time
      • 7、总结

0、引言

​ Python3语言的基础,快速掌握Python语言中的基本数据类型、Python编程语言的基本语法、Python面向对象编程和Python的文件操作。为以后的机器学习实例实验打下基础。

​ 本篇内容适用人群:具有一定python基础的读者,期末考试复习巩固基础可用、打算学习机器学习等需要用python编程实现的知识,需要巩固python内容的读者…

​ 另外没有基础的同学建议去菜鸟教程等文档、或者网课自学

1、基础概念

🐍变量

语法:变量名=变量值(等号代表赋值)

输入:

a="hello world,hello tianhai"
print(a)

输出:

hello world,hello tianhai

🐍注释

为了代码的清晰)从#号开始,一直到本行的末尾,都是被注释的内容不会被Python解释器解析,即Python解释器看到#就不会进行编译。

# 我是一段注释
'''
我也是一段注释
'''

🐍输入 输出

语法:input(content)

返回值是字符串

输入:

input()

在弹出的输入框中通过键盘输入‘123’

输出:

'123'

2、数据类型

🐍数值类型

数值类型包含整型、浮点型、复数类型、布尔类型

各数值类型间可相互转换

输入:

print(int())		#默认为0
print(float())		#没有参数,默认为0.0
print(complex())		#没有参数。默认为 0j
print(bool())		#没有参数,默认为False

输出:

0
0.0
0j
False

🐍运算符

输入:

print(True+False)		# 输出1,True默认为1,False为0   
print(True or False)	# 输出True,关键字or执行“或”操作
print(5//2)			# 输出2,//为取整运算符 
print(5%2)			# 输出1,%为取余运算符 
print(3**2)   			# 输出9,**表示乘方操作 
print(5+1.6) 	 		# 输出6.6,不同精度的类型的数字相加默认取高精度类型作为结果

输出:

1
True
2
1
9
6.6

🐍字符串类型

输入:

S = 'python'							# 给变量S赋值 python
# len(obj): 返回对象的长度
print(len(S)) 							# 输出6 
print(S[0],S[1],S[-1]) 				# 输出pyn ,按照索引获取元素
print(S+'1',S*2) 						# 输出python1 pythonpython:合并和重复

输出:

6
p y n
python1 pythonpython

字符串常用操作

  1. 字符串切片
S = "python"
S.split('h')
# 输出[‘pyt’,’on’]
  1. 字符串替换
S.replace('py','PY')
  1. 小写字符转化为大写、大写字符转化为小写
S.upper()
S.lower()
  1. 字符连接
emo = ''.join(['life', 'is' ,'short'])
print(emo)
# 输出life is short,join拼接字符串
  1. 格式化字符串
hw12='%s %s %d' % ('hello','world',12) 	# 格式化字符串
print(hw12)								# 输出hello world 12

🐍列表

  1. 列表的常用操作
language = ['python', 'R', 'C++']
  1. 追加元素
language = ['python', 'R', 'C++']
language.append('Rust')			# 追加元素
print(language)
# 输出 ['python', 'R', 'C++','Rust']
  1. 删除元素
language = ['python', 'R', 'C++']
language.remove('R')
print(language)
# 输出 ['python', 'C++']
  1. 插入列表的指定位置
language = ['python', 'R', 'C++']
language.insert(1,'Java')# 在下标1的地方插入元素Java
print(language)
# 输出 ['python', 'Java', 'R', 'C++']
  1. 移除列表中下标对应的元素
language = ['python', 'R', 'C++']
language.pop(1)# 删除下标为1的元素
print(language)
# 输出 ['python', 'C++']
  1. 遍历并获取元素和对应索引
language = ['python', 'R', 'C++']
for i in enumerate(language): 
    print(i)		
#输出:(0, python)
#	   (1, R)
#	   (2, C++)
  1. 批量生成符合规则的元素组成的列表
language = ['python', 'R', 'C++']
double = [x*2 for x in language]
print(double)					
#输出 :['pythonpython ', 'RR ', 'C++C++ ']
  1. 对列表进行排序
list1 = [12,45,34,56]
list1.sort()
print(list1)
# 输出[12,34,45,56]
  1. 逆置列表中元素
list1 = [12,45,34,56]
list1.reverse()					# 对列表进行逆置
print(list1)						# 输出[56,34,45,12]

🐍元组

  1. 创建元组
T=(1,2,3)
  1. 元组合并相加
T = T+(4,5)
print(T) 
输出:(1, 2, 3, 4, 5)
  1. 只有一个元素的元组
t=(12,) 
  1. 元组的不可变性
tuple1 = (12,45,32,55,[1,0,3])
# 元组中可变的元素是可以变得
tuple1[4][0] = 2
print(tuple1)			# (12,45,32,55,[2,0,3])
tuple1[0] = "11"		# 程序异常,元组的不可变性

🐍字典

  1. 定义字典
#三种方法
x = {'food':'Spam','quantity':4,'color':'pink'}
X =dict(food='Spam',quantity=4, color='pink')
x = dict([("food", "Spam"),("b", "2"),("color","pink")])
  1. 元素访问
print(x.keys()) 	# 输出dict_keys(['food', 'quantity', 'color'])
print(x.values())	# 输出dict_values(['Spam', 4, 'pink'])
print(x.items())	# 输出 dict_items([('food', 'Spam'), ('quantity', 4), ('color', 'pink')])

3.清空与删除

x.clear()				# 清空字典中的所有数据
print(x)				# 输出 {}
del(x)
print(x)				# 程序异常,提示“d”未定义

🐍集合

  1. 定义集合
sample_set = {'Prince', 'Techs'}
print('Data' in sample_set)   	# 输出False,in的作用是检查集合中是否存在某一元素
  1. 增加、删除元素
sample_set.add('Data')      		# 向集合中增加元素Data
print(sample_set)					# 输出 {'Prince', 'Techs', 'Data'}
sample_set.remove('Data')   		# 删除元素Data  

3.不可变集合

sample_set = frozenset(sample_set)

4.集合元素的唯一性

list2 = [1,3,1,8,3]
print(list(set(list2)))	# 输出 [1,3,8],利用集合元素的唯一性进行列表去重

3、选择、循环与函数

接收一个用户输入的分数,然后判断用户所输入的分数属于什么级别。使用Python中的if语句可以完成此功能。

🐍if…elif…else

if 判断条件1:
    执行语句1……
elif 判断条件2:
    执行语句2……
elif 判断条件3:
    执行语句3……
else:
    执行语句4……

🐍try:… except Exception

是Python中用于捕获异常的语句,如果try中的语句出现错误,则会执行except中的语句。

输入:

#根据输入的分数判断
# input():用于接收输入。
score = input("请输入你的分数")# input函数接收输入,为字符串类型
try:
    score = float(score)	# 将分数转化为数字类型
    if 100>=score>=90:		# 判断输入的值是否大于等级分数
        print("优")			# 满足条件后输出等级
    elif 90 > score >= 80:
        print("良")
    elif 80>score>60:
        print("及格")
    else:
        print("去补考吧!")
except Exception:
	print("请输入正确的分数")

输出:

请输入你的分数59
去补考吧!

🐍循环语句

当满足条件时循环执行语句块,想要结束循环时,使用break或continue结束循环。

输入:

#while循环
i = 0								# 新建i变量
while i<9:							# 设置循环条件
	i+=1							# 每次循环i增加1
	if i == 3:						# 判断条件是否满足
		print("跳出此次循环")
		continue					# continue跳出当前的这一次循环
	if i == 5:
		print("跳出当前大的循环")
		break						# 跳出当前的大的循环
	print(i)

输出:

1
2
跳出此次循环
4
跳出当前大的循环

输入:

#使用for循环打印包含*元素的菱形
for i in range(10):  					 #定义外层循环(第几行)
    for k in range (10-i): 				 #定义内层循环,每一行对应的纵向位置
        print(" ",end="") 				 #打印空
    for j in range(2*i-1): 				 #打印*, 每一行对应的纵向位置
        print('*', end="")
    print()

输出:

         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************

🐍函数

自定义一个函数,返回一个序列。序列中每个数字都是前两个数字之和(斐波那契数列)。

输入:

def fibs(num):								# 位置参数
    result = [0,1]								# 新建列表存储数列的值
    for i in range(2,num):						# 循环num-2次
        a = result[i-1] + result[i-2]			
        result.append(a)						# 将值追加至列表
    return result								# 返回列表
fibs(5)

输出:

[0, 1, 1, 2, 3]

输入:

def hello(greeting='hello',name='world'):		# 默认参数
    print('%s, %s!' % (greeting, name))		# 格式化输出	
hello() 							# hello,world    默认参数
hello('Greetings') 				# Greetings,world     位置参数
hello('Greetings','universe') 	# Greetings,universe     位置参数
hello(name='Gumby')				# hello,Gumby	关键字参数

输出:

hello, world!
Greetings, world!
Greetings, universe!
hello, Gumby!

4、对象

🐍创建类

据Dog类创建的每个实例都将存储名字和年龄。我们将赋予了每条小狗蹲下(sit())和打滚(roll_over())的能力:

输入:

class Dog():
	"""一次模拟小狗的简单尝试"""
	def __init__ (self,name,age):
		"""初始化属性name和age"""
		self.name = name
		self.age = age
	def sit(self):
		"""模拟小狗被命令时蹲下"""
		print(self.name.title()+"is now sitting")
	def roll_over(self):
		"""模拟小狗被命令时打滚"""
		print(self.name.title()+"rolled over!")

dog = Dog("哈士奇",2)
dog.sit()
dog.roll_over()

输出:

哈士奇is now sitting
哈士奇rolled over!

🐍访问属性

输入:

class Employee:
   '所有员工的基类'
   empCount = 0
   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1  
   def displayCount(self):
       print("Total Employee %d" % Employee.empCount )
   def displayEmployee(self):
       print("Name : ", self.name,  ", Salary: ", self.salary)
# 创建 Employee 类的第一个对象"
emp1 = Employee("Zara", 2000)
# 创建 Employee 类的第二个对象"
emp2 = Employee("Manni", 5000)
emp1.displayEmployee()
emp2.displayEmployee()
print("Total Employee %d" % Employee.empCount)

输出:

Name :  Zara , Salary:  2000
Name :  Manni , Salary:  5000
Total Employee 2

🐍类的继承

面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。继承完全可以理解成类之间的类型和子类型关系。

输入:

class Parent:        # 定义父类
   parentAttr = 100
   def __init__(self):
       print("调用父类构造函数")
   def parentMethod(self):
       print('调用父类方法')
   def setAttr(self, attr):
       Parent.parentAttr = attr
   def getAttr(self):
       print("父类属性 :", Parent.parentAttr)
class Child(Parent): # 定义子类
   def __init__(self):
       print("调用子类构造方法")
   def childMethod(self):
       print('调用子类方法')
c = Child()          # 实例化子类
c.childMethod()      # 调用子类的方法
c.parentMethod()     # 调用父类方法
c.setAttr(200)       # 再次调用父类的方法 - 设置属性值
c.getAttr()    

输出:

调用子类构造方法
调用子类方法
调用父类方法
父类属性 : 200

5、深拷贝和浅拷贝

使用python中的copy模块来实现深拷贝的功能

🐍浅拷贝

原数据中嵌套列表的值被修改时,浅拷贝数据一起被修改

import copy
Dict1 = { 'name': 'lee', 'age':89, 'num':[1,2,8]}	# 新建字典
Dict_copy = Dict1.copy()			# 浅拷贝
Dict1['num'][1] = 6				# 修改原数据中嵌套列表的值
print('Dict_copy:'+ str(Dict_copy))	
# Dict_copy :{‘name’:’lee’, ‘age’:89, ‘num’:[1,6,8]}# 浅拷贝数据一起被修改

🐍深拷贝

原数据中嵌套列表的值被修改时,深拷贝的数据不被修改

import copy
Dict1 = { 'name': 'lee', 'age':89, 'num':[1,2,8]}	# 新建字典
Dict_dcopy = Dict1.copy()			# 浅拷贝
Dict1['num'][1] = 6				# 修改原数据中嵌套列表的值
print('Dict_dcopy:'+ str(Dict_dcopy))	
# Dict_dcopy :{‘name’:’lee’, ‘age’:89, ‘num’:[1,2,8]}		# 深拷贝没有修改

6、标准库

🐍sys

  1. sys.exit([n])

此方法可以是当前程序退出,n为0时表示正常退出,其他值表示异常退出。

输入:

import sys
for i in range(100):
    print(i)
    if i ==5:
        sys.exit(0)

输出:

0
1
2
3
4
5

An exception has occurred, use %tb to see the full traceback.

SystemExit: 0
  1. sys.path

获取模块搜索路径。

输入:

sys.path

输出:

['', 'D:\\Anaconda3\\python39.zip', 'D:\\Anaconda3\\DLLs', 'D:\\Anaconda3\\lib', 'D:\\Anaconda3', 'D:\\Anaconda3\\lib\\site-packages', 'D:\\Anaconda3\\lib\\site-packages\\win32', 'D:\\Anaconda3\\lib\\site-packages\\win32\\lib', 'D:\\Anaconda3\\lib\\site-packages\\Pythonwin']
  1. sys.platform

获取当前系统平台。

输入:

sys.platform

输出:

'linux'  

or

'win32'

🐍os

  1. 获取当前进程id
import os
print("当前进程的ID:", os.getpid())
  1. 获取当前父进程id
print("当前父进程的ID:", os.getppid())
  1. 获取当前所在路径
cwd = os.getcwd()
print("当前所在路径为:",cwd)
  1. 改变当前工作目录
os.chdir("/home/")
print("修改后当前所在路径为:", os.getcwd())
  1. 返回目录下所有文件
print("当前目录下的文件有:", os.listdir(cwd))
  1. 输出当前路径下的所有文件
for root, dirs, files in os.walk(cwd, topdown=False):
    for name in files:
        print(os.path.join(root, name))
    for name in dirs:
        print(os.path.join(root, name))

🐍time

  1. time.time()

用于获取当前时间戳

import time
# time.time():用于获取当前时间戳
time_now = time.time()
print("时间戳:",time_now)
# 输出:
# 时间戳: 1560166359.9892673
  1. time.localtime()

获取时间元组

localtime = time.localtime(time_now)
print("本地时间为 :", localtime)
  1. time.asctime()

获取格式化的时间

localtime = time.asctime(localtime)
print("本地时间为 :", localtime)
  1. time.strftime(format[, t])

接收时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。

print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

7、总结

本文系统性地介绍了python一些基本命令,数据类型,循环以及函数的定义等,并相应给了一些例子,通过完成这些小例子能够较好地巩固python基础并为以后的学习做铺垫。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/698940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

直播预约 | 邀您共同探讨“云XR技术如何改变元宇宙的虚拟体验”

随着数字化时代的到来&#xff0c;元宇宙成为了人们关注的焦点。它是一个虚拟的世界&#xff0c;融合了现实与虚拟的元素&#xff0c;让人们可以以全新的方式进行交互、创作和体验。 云XR技术是元宇宙建设的重要支撑技术之一&#xff0c;元宇宙需要具备高度真实感、高度交互性…

7DGroup性能实施项目日记6

九月廿三 壬寅年 虎 庚戌月 甲辰日 全国在降温之际 不管如何&#xff0c;今天总算是执行起来了脚本。在配置了性能工具之Jmeter 后置监听器可视化数据逻辑的界面中&#xff0c;看到下图&#xff1a; 显然 TPS 在这个接口中能达到 1500 以上&#xff0c;这对第一次执行来说&am…

最优化--最大似然估计--最优化理论介绍

目录 最大似然估计 概念 最大似然估计原理 应用 最优化理论介绍 最优化问题 迭代求解 最大似然估计 概念 最大似然估计&#xff08;Maximum Likelihood Estimation&#xff0c;MLE&#xff09;是统计学中一种常用的参数估计方法。它基于观测数据&#xff0c;通过寻找…

win11禁止运行脚本的解除方法

win11使用Windows PowerShell执行脚本时&#xff0c;提示本系统上禁止运行脚本 解决办法&#xff08;按照步骤进行&#xff09;&#xff1a; 先以管理员身份运行PowerShell。 命令行输入set-ExecutionPolicy RemoteSigned回车&#xff0c;然后输入Y回车即可。至此问题解决。若…

向量的傅里叶变换

note 若要求矩阵的傅里叶变换&#xff0c;则对每个行或列向量求对应的傅里叶变换。 比如matlab中对矩阵求fft傅里叶变换就是对每个列向量分别求傅里叶变换。 code /*\brief:离散傅里叶变换\param dir:变换方向&#xff0c;-1为傅里叶正变换&#xff0c;1为傅里叶反变换\param…

LLM - 第2版 ChatGLM2-6B (General Language Model) 的工程配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131445696 ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本&#xff0c;在保留了初代模型对话流畅、部署门槛较低等众多优…

逍遥自在学C语言 | 函数初级到高级解析

前言 函数是C语言中的基本构建块之一&#xff0c;它允许我们将代码组织成可重用、模块化的单元。 本文将逐步介绍C语言函数的基础概念、参数传递、返回值、递归以及内联函数和匿名函数。 一、人物简介 第一位闪亮登场&#xff0c;有请今后会一直教我们C语言的老师 —— 自在…

python用flask将视频显示在网页上

注意我们的return返回值必须是以下之一&#xff0c;否则会报错 from flask import Flask, render_template, Response import cv2app Flask(__name__)app.route(/) def index():return render_template(index.html)def gen(camera):while True:success, image camera.read(…

组装电脑U盘重装Win10系统教程图解

当您需要对组装电脑进行重新安装Win10操作系统时&#xff0c;使用U盘是一种方便而有效的方法&#xff0c;U盘重装系统不仅可以帮助您解决各种系统问题&#xff0c;还能提供一个干净、稳定的系统环境。无论您是初学者还是有一定经验的用户&#xff0c;本教程将提供清晰的组装电脑…

人机环境系统智能能够解决以巴冲突吗?

巴以冲突的由来可以追溯到19世纪末和20世纪初&#xff0c;当时巴勒斯坦是奥斯曼帝国的一部分&#xff0c;但随着第一次世界大战的爆发&#xff0c;奥斯曼帝国在1917年被英国占领。在此后的几十年里&#xff0c;巴勒斯坦地区成为了犹太人和阿拉伯人之间争夺的焦点。在20世纪初&a…

K8s部署 Redis 主从集群

目录 ​编辑 一、环境准备 1.1 环境说明 1.2 安装说明 1.3 Redis集群说明 1&#xff09;单实例模式 2&#xff09;哨兵模式 3&#xff09;集群模式 二、安装NFS 2.1 安装NFS 2.2 创建NFS共享文件夹 2.3 配置共享文件夹 2.4 使配置生效 2.5 查看所有共享目录 ​编…

PW系列wifi墨水屏标签操作指导

PW系列wifi墨水屏标签操作指导-V1.0 版本 操作人 操作 日期 V1.0 Kevin 创建 20220927 一、设备初始化 1.1.准备 向厂家获取一下信息&#xff1a; 服务器地址(MQTT地址) 操作账号 和操作账号绑定的(产品KEY) 1.2.安装wifi-tools工具 需要windows系统电脑并且有w…

【2022吴恩达机器学习课程视频翻译笔记】2.3监督学习-part-2

B站上面那个翻译我有点看不懂&#xff0c;打算自己啃英文翻译了&#xff08;有自己意译的部分&#xff09;&#xff0c;然后懒得做字幕&#xff0c;就丢在博客上面了&#xff0c;2.2之前的章节结合那个机翻字幕能看懂 2.3监督学习-part-2 So supervised learning algorithms …

Linux vs MacOS ,你更喜欢哪个系统?

大家应该都知道Windows&#xff0c;Linux和MacOS这几个操作系统&#xff0c;它们各有优缺点&#xff0c;比如像游戏等专门的领域&#xff0c;Windows当然是比Linux更好些&#xff0c;但Linux是开源的&#xff0c;安全性和稳定性要比Windows要好&#xff0c;如果是关于视频编辑方…

蓝绿发布、灰度发布和滚动发布

当涉及到软件发布时&#xff0c;金丝雀发布&#xff08;灰度发布&#xff09;、滚动发布和蓝绿发布是常见的策略。它们各自有自己的优缺点、区别和特点。本文将简单介绍&#xff1a; 金丝雀发布&#xff08;Canary Release&#xff09; 金丝雀发布有一个有趣的小故事&#xff…

【算法】最长公共子序列编辑距离

文章目录 最长公共子序列&#xff08;LCS&#xff09;编辑距离&#xff08;Edit Distance&#xff09;总结相关题目练习583. 两个字符串的删除操作 https://leetcode.cn/problems/delete-operation-for-two-strings/712. 两个字符串的最小ASCII删除和 https://leetcode.cn/prob…

破解 Linux 文件安放之谜:哪里才是绝佳文件归宿?

想象一下&#xff0c;你盯着 Linux 中一大堆晦涩难懂的目录名。你想知道应该把特定类型的文件放在哪里。于是把文件随意放进了 /usr/share&#xff0c;希望这样做是正确的。 几天后&#xff0c;你发现应该把它放在 /var/local。 我们都有过类似的经历。Linux 的目录结构可能非…

如何在 AlmaLinux 上安装 Cockpit

Cockpit 是一个管理平台&#xff0c;允许管理员使用远程管理器轻松管理和控制他们的 GUI 或 CLI Linux 服务器系统。浏览器。驾驶舱可通过 Web 浏览器访问&#xff0c;其仪表板可让您查看服务器的健康状况以及其他系统统计数据&#xff0c;例如网络使用情况、磁盘空间和利用率、…

FPGA-DFPGL22学习3-调试手段

文章目录 前言一、调试前瞻二、Fabric Inserter 使用步骤1、选择探针2、开启调试 总结 前言 和原子哥一起学习FPGA 开发环境&#xff1a;正点原子 ATK-DFPGL22G 开发板 参考书籍&#xff1a; 《ATK-DFPGL22G之FPGA开发指南_V1.1.pdf》 个人学习笔记&#xff0c;欢迎讨论 一…

JVM调优相关

1.jvm中的一些工具 1.1 jps jps 用于查看java进程运行情况&#xff0c;输出JVM中运行的进程状态信息 命令行参数如下&#xff1a; -m 输出传入main方法的参数 -l 输出main类或Jar的全限名 -v 输出传入JVM的参数 如上&#xff0c;bootstrap 就是tomcat进程&#xff0c;调用…