Python笔记

使用Python版NSGA2算法时的笔记,供查漏补缺。

1.append与extend
    append可以添加单个元素,也可以添加可迭代对象,但是extend只能添加可迭代对象:
    在添加可迭代对象是,append在添加后不改变添加项的类型,添加之前是什么类型,添加之后就是什么类型;
      而extend在添加后,会将添加项进行迭代,迭代的元素挨个添加到被添加的数组中。

2.set()
函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

    
3.cmp()函数
    cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
    
4.enumerate()函数
    将一个可遍历的数据对象(如列表,元组或字符串)组合为一个索引序列,同时列出数据下标和数据
    
5.np.ndarray()

ndarray 是一个多维的数组对象,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点。
ndarray 的一个特点是同构:即其中所有元素的类型必须相同。

6.yield
    yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,
    Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!
    在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,
    下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,
    于是函数继续执行,直到再次遇到 yield。
    一个带有 yield 的函数就是一个 generator,它和普通函数不同,生成一个 generator 看起来像函数调用,
    但不会执行任何函数代码,直到对其调用 next()(在 for 循环中会自动调用 next())才开始执行。
    虽然执行流程仍按函数的流程执行,但每执行到一个 yield 语句就会中断,并返回一个迭代值,
    下次执行时从 yield 的下一个语句继续执行。看起来就好像一个函数在正常执行的过程中被 yield 中断了数次,
    每次中断都会通过 yield 返回当前的迭代值。
    yield 的好处是显而易见的,把一个函数改写为一个 generator 就获得了迭代能力,
    比起用类的实例保存状态来计算下一个 next() 的值,不仅代码简洁,而且执行流程异常清晰。


7.zip()

函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
    
8.all()

函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。
元素除了是 0、空、FALSE 外都算 TRUE
 

9.any(x)

判断x对象是否为空对象,如果都为空、0、false,则返回false,如果不都为空、0、false,则返回true

random.uniform(x, y)  

uniform() 方法将随机生成下一个实数,它在 [x, y) 范围内。 返回一个浮点数。

10.取值

[:,i]取所有行的第i个数据(从0开始) 


11.mean()求矩阵的均值

12.shape[0]读取矩阵第一维度的长度
 
13.标准差定义是总体各单位标准值与其平均数离差平方的算术平均数的平方根。它反映组内个体间的离散程度。

14.a[m,n]

对一个列表a a[m,n]代表从下标m开始取,取到下标n为止,不包含n

15.引用问题

    a=1       # 对象 1 被 变量a引用,对象1的引用计数器为1  
    b=a       # 对象1 被变量b引用,对象1的引用计数器加1  
    c=a       #1对象1 被变量c引用,对象1的引用计数器加1  
    del a     #删除变量a,解除a对1的引用  
    del b     #删除变量b,解除b对1的引用 
del删除的是变量,而不是数据

 

16.消除科学计数法

np.set_printoptions(suppress=True)


17.快速非支配排序
    算法需要计算种群P中每个个体i的两个参数ni(种群中支配个体i的个体数目)和si(种群中被个体i支配的个体集合)。
    1、找出种群中所有ni=0的个体,保存在集合F1中(也就是第一层)。
    2、对F1中的每个个体i,其所支配的个体集合为si,遍历si中每个个体L,nL=nL-1,若nL=0,将L保存在集合H中(第二层)。
    3、以H为当前集合,重复2,直到整个种群被分层

NSGA2的多样性保护
    1.拥挤距离 crowding distance
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值