神经网络中常用python知识点总结
本文主要涉及目前神经网络中常遇到的python字符串分隔,对列表,字典,类,文件,函数,数据预处理与展示等方面的知识,大致总结下这方面的应用。
1、字符串
1.1 字符串索引
假如字符串长度为N,其索引值从左到右为[0,N],N处取不到,从右向左为范围为[-N,-1],-1取不到。举例如下:
s = 'We are friend!'
print(len(s))
s1 = s[0]
s2 = s[0:]
s3 = s[1:5] #5取不到
s4 = s[-1:]
s5 = s[-4:-1] #-1取不到 注意冒号的左边数要比右边的小
s6 = s[0:13]
s7 = s[-13:-1]#
#print(s1-s7)后结果如下:
输出:
13
W
We are friend
e ar
d
ien
We are friend
We are frien
1.2 其他操作
函数名 | 方法 | 用法 |
---|---|---|
strip | 用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列 | str.strip([chars]); |
lower | 字母转小写 | str.lower() |
split | 按指定符号分隔字符串 | s = ‘ab,cde,fgh,ijk’ print(s.split(’,’)) |
find | 按指定字符查找字符串中的该字符 | s =‘snow,maple’,s.find(‘now’) |
2、列表操作
列表是python的一种数据类型,可以同时存放数字,字符串等多种数据类型,类似c语言中的结构体。
2.1 列表索引
列表索引和字符串索引语法相同。
list1 = ['1',2,'3','snow',4]
list0 = list1[0]
list2 = list1[0:]
list3 = list1[1:]
list4 = list1[-1:]
list5 = list1[-5:]
输出:
list1---['1', 2, '3', 'snow', 4]
list0---1
list2---['1', 2, '3', 'snow', 4]
list3---[2, '3', 'snow', 4]
list4---[4]
list5---['1', 2, '3', 'snow', 4]
2.2 其他操作
2.2.1 添加元素
函数名 | 方法 | 用法 |
---|---|---|
append | 向列表中添加元素,一次只能加一个,且只能在列表尾部追加 | list1.append(a) |
extend | 向列表中添加元素,一次可添加多个,也只能在列表尾部追加 | list1.extend(a,b,c…) |
insert | 可在列表指定位置添加元素 | list.insert(a,b),在列表的第a+1处添加元素b |
2.2.2 删除元素
函数名 | 方法 | 用法 |
---|---|---|
remove | 从列表中删除特定元素 | list1.remove(a)——删除元素a |
del | 删除掉索引为n的元素,注意del是一种语句 | del list1[n] |
insert | 可在列表指定位置添加元素 | list.insert(a,b),在列表的第a+1处添加元素b |
pop | 将列表最后一个元素返回,并删除 | a = list1.pop() |
2.2.3 排序,逆置
函数名 | 方法 | 用法 |
---|---|---|
reverse | 将列表中的元素逆置 | list1.reverse() |
sort | 将元素列表排序 | list1.sort() |
3、元组
元组是与列表类似的另一种容器型数据类型,用圆括号表示,它的基本性质和索引操作和列表是一样的,重要的是元组中的元素不能重新赋值。
#元组打包
a = (1,2,3,4,"nihao",5)
c,d,e,f,g,h = a
相应的取出对应的值,左边的变量个数和元组a的长度想通过。
4、字典
字典是python中可变容器模型存放的元素无序,它可以同时存放多种类型,以键-值对的形式存在。
常见的注意事项:
- ①创建字典时,键不能重复,同一个键可以多个值,但只记住最后一个赋值
- ②创建字典时,键的类型可以时字符串,数组,元组,但不能时列表,列表可变,值可以是列表,字符串,数字等其他数据类型
a = {"ni":[1,'wo'],2:"o",(1,2):'ninini',(3,4):(2,1)}
print(a)
print(a[2])
print(a.get((1,2)))
对于键是字符串,数字的可以直接索引获得值,如果是元组的话可以用get函数获取元素
上述输出:
{'ni': [1, 'wo'], 2: 'o', (1, 2): 'ninini', (3, 4): (2, 1)}
o
ninini
其他重要函数:items
采用items可将字典以列表的形式输出,并且元素类型是元组数组,如下所示:
a.items()
输出:
dict_items([('ni', [1, 'wo']), (2, 'o'), ((1, 2), 'ninini'), ((3, 4), (2, 1))])
5、其他常用函数
5.1 join函数
python中的join函数其实就是字符串的拼接,它可以将元组,列表,字典的键等进行拼接(元组,列表,字典里的元素数据类型必须是字符串类型),它常在以下两种情形用到
- ①:在字符串中的应用:a.join(b) 其中a是分隔符,b是需要连接的数据例如
a = ','
c = ' '
b = ['1','2','is','ni']
print(a.join(b)) #注意b中的元素全是字符串类型才能连接
print(c.join(b))
输出:
1,2,is,ni
1 2 is ni
- ②:文件地址拼接: os.path.join(path1,path2,path3…)
import os
os.path.join('/hello/','good/boy/','doiido')
输出:
'/hello/good/boy/doiido'
import os
path1 = 'C:/python/'
path2 = 'xi/'
path3 = 'wo/'
print(os.path.join(path1,path2,path3,'ee'))
输出:C:/python/xi/wo/ee
注意每个地址的最后一个加/结尾,最后一个文件可不用,如果不加,则出错如下:
import os
path1 = 'C:/python'
path2 = '/xi'
path3 = '/wo'
print(os.path.join(path1,path2,path3))
输出结果:C:/wo
5.2 seed,rand,randn,randint
方法名 | 作用 |
---|---|
seed | 随机因子,一旦被确定后,无论运行多少次,生成的随机数一样,一种伪随机有利于结果的复现 |
rand(a,b,c…) | 生成 [0,1)范围内满足均匀分布的随机样本数 abc…行列高…三维及以上 |
randn(a,b,c…) | 生成一个满足平均值为0,方差为1的正太分布随机样本数 |
randint | 在给定范围内生成类型为整数的随机样本数 |
binomial | 生成一个维度指定且满足二项分布的随机样本数 |
beta | 生成一个指定维度且满足beta分布的随机样本数 |
normal | 生成一个指定维度且满足高斯正太分布的随机样本数 |
有随机种子,无论执行多少次都是一样的随机数。
import numpy as np
np.random.seed(10)
print(np.random.rand(2,3))
print(np.random.rand(2,2,4))
print(np.random.randint(1,10))
print(np.random.binomial(6,1))
输出:
二维:
[[0.77132064 0.02075195 0.63364823]
[0.74880388 0.49850701 0.22479665]]
三维:
[[[0.19806286 0.76053071 0.16911084 0.08833981]
[0.68535982 0.95339335 0.00394827 0.51219226]]
[[0.81262096 0.61252607 0.72175532 0.29187607]
[0.91777412 0.71457578 0.54254437 0.14217005]]]
7
6
5.3 break,continue,pass
break,continue和pass是控制循环的语句,它们区别如下
语句名 | 作用 |
---|---|
break | 用于中断当前循环并且结束整个循环 |
continue | 用于中断当前循环,进入下一次循环 |
pass | 不做任何操作,继续执行当次循环中的后续代码,主要用于保持代码块的完整性。 |
6、python类
python也是面向对象编程的一种,所以python中也有类,所谓类就是用来描述同属性和方法的对象的集合,定义了该集合中每个对象所共有的属性和方法,对象则是类的实例。
6.1 类的创建
在python中使用class来创建一个类,以:结尾,需要了解以下知识:
- 类变量:在创建类时定义的一些变量,叫类变量,可在此类的所有实例中共享,同时内部类和外部类也可对其访问。
- _ init _():是类的初始化方法, 每创建一个类的实例时都会调用一次。
- self:代表类的实例,在定义类的方法时必须要有的,但是在调用时不必传入参数。
案例如下:
class A:
s = 0
def __init__(self,name,num):
self.name=name
self.num=num
A.s+=1
def function(self): #定义类方法时必须加self
print("nihao")
stu1 = A("snow",'2016') #实例化一个变量,采用__init__中的参数类型进行赋值。
print(stu1.s)
stu1.function() #不用再写self
6.2 类的继承
所谓继承就是定义一个类通过继承就可以获得另一个类的所有方法, 被继承的类就是父类,如果查找一个方法在当前类没有找到,判断是否为子类,如果是的话,就继续在父类中查找此方法。
案例如下:
class Parent:
def __init__(self,name,num):
self.name=name
self.num=num
def print_name(self): #定义类方法时必须加self
print("name is",self.name)
def print_num(self):
print('num is',self.num)
def set_num(self,num):
self.num = num
class B(Parent):
def __init__(self,name,num,school):
self.name = name
self.num = num
self.school = school
def print_school(self):
print("school is",self.school)
stu = B("snow",'2022','anhui')
stu.print_school()
stu.print_name()
stu.print_num()
stu.set_num(2016)
stu.print_num()
#输出为
school is anhui
name is snow
num is 2022
num is 2016
6.3 类的重写
当父类中的方法满足不了我们的需求时,我们可以对该方法进行重写。
class Parent:
def __init__(self,name):
self.name = name
def print_name(self): #定义类方法时必须加self
print("name is",self.name)
class B(Parent):
def __init__(self,name):
self.name = name
def print_name(self):
print("chong xie le",self.name)
stu = B("name")
stu.print_name()
输出:chong xie le name