我是python的新手,正在尝试实现一种遗传算法,但需要其中一项操作的代码方面的帮助.

我是这样提出问题的:

>每个人我都由一串M个整数表示

> I中的每个元素e取值从0到N

> 0到N之间的每个数字都必须在I中至少出现一次

> e的值并不重要,只要每个唯一值元素采用相同的唯一值(将它们视为类标签)即可

> e小于或等于N

>每个I的N可以不同

应用交叉操作后,我可能会生成违反这些约束中一个或多个约束的子对象,因此我需要找到一种方法来对元素进行重新编号,以使它们保留其属性,但符合约束条件.

例如:

parent_1 (N=5): [1 3 5 4 2 1|0 0 5 2]

parent_2 (N=3): [2 0 1 3 0 1|0 2 1 3]

*** crossover applied at "|" ***

child_1: [1 3 5 4 2 1 0 2 1 3]

child_2: [2 0 1 3 0 1 0 0 5 2]

child_1显然仍然满足所有约束,因为N = 5且所有值0-5在数组中至少出现一次.

问题出在子2上-如果我们使用max(child_2)计算N的方式,我们得到的值为5,但是如果我们计算唯一值的数量,则N = 4,这就是N的值.我要问的(以很长的路要走,这是理所当然的)是一种好的,pythonic的方法:

child_2: [2 0 1 3 0 1 0 0 5 2]

*** some python magic ***

child_2': [2 0 1 3 0 1 0 0 4 2]

*or*

child_2'': [0 1 2 3 1 2 1 1 4 0]

child_2”用来说明值本身并不重要,只要唯一值的每个元素映射到相同值,就可以满足约束条件.

到目前为止,这是我尝试过的:

value_map = []

for el in child:

if el not in value_map:

value_map.append(el)

for ii in range(0,len(child)):

child[ii] = value_map.index(child[ii])

这种方法可以工作并返回类似于child_2的结果,但是我无法想象它在字符串上两次迭代的方式非常有效,所以我想知道是否有人对如何使其更好提出任何建议.

谢谢,对于这么简单的问题这么长时间的帖子,我们深表歉意!

python访问序列元素的编号用什么括起来_python-重新编号数组中元素的有效方法...相关推荐

  1. python3查找元素在数组位置_Python:查找数组中元素的位置

    我有一个CSV包含气象数据,如最高和最低温度,降水量,经度和纬度的气象站等.每类数据存储在一个单一的列. 我想找出最高和最低温度的位置.找到最大值或最小值很容易: numpy.min(我的温度栏) 如 ...

  2. B09_NumPy迭代数组(控制遍历顺序,修改数组中元素的值,使用外部循环,广播迭代)

    NumPy迭代数组 NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式. 迭代器最基本的任务的可以完成对数组元素的访问. 接下来我们使用arange()函数 ...

  3. C#求数组中元素的全排列

    2019独角兽企业重金招聘Python工程师标准>>> 1.算法描述 全排列的第一项是该数组的升序排列,最后一项是该数组的降序排列.本文中用到的了一个函数FindNextArray: ...

  4. scala 获取数组中元素_从Scala中的元素列表中获取随机元素

    scala 获取数组中元素 We can access a random element from a list in Scala using the random variable. To use ...

  5. Java计算数组中元素的总和

    数组元素的总和是指数组中所有元素(或数字)的总和.数组元素可以是整数(int)或十进制数字(float或double). 方法1:使用for循环 这是一种传统且最常用的方法,其中使用for循环来迭代数 ...

  6. 计算数组中元素的加权平均值 numpy.average()

    [小白从小学Python.C.Java] [计算机等级考试+500强双证书] [Python-数据分析] 计算数组中元素的加权平均值 numpy.average() [太阳]选择题 对于以下pytho ...

  7. ios 替换数组中元素_ios可变数组的所有操作

    #pragma mark 创建数组c NSMutableArray * array =[[NSMutableArray alloc] initWithObjects:@"a",@& ...

  8. JavaScript Array reverse 方法:颠倒数组中元素的顺序

    在JavaScript中,Array对象的reverse()方法将颠倒(反转)数组中元素的顺序.arr.reverse()在原数组上实现这一功能,即,reverse()会改变原数组. 例1:将数组元素 ...

  9. 汇编语言LENGTHOF运算符:计算数组中元素的个数

    LENGTHOF 运算符计算数组中元素的个数,元素个数是由数组标号同一行出现的数值来定义的.示例如下: .data byte1 BYTE 10,20,30 array1 WORD 30 DUP (?) ...

  10. 交换二维数组元素c语言,二维数组中元素替换问题!

    二维数组中元素替换问题! 题目:对某个二维数组右上三角的全部元素(不包括对角线上的元素)做如下变换: (1)若该数是偶数,则找到左下三角中和它关于对角线对称的元素用这两个元素的最大公约数替换该数 (2 ...

最新文章

  1. UIKit框架使用总结--看看你掌握了多少
  2. MySQL中,当 update 修改数据与原数据相同时会再次执行吗?
  3. 【转载】中文输入法下onKeyPress不能触发的问题
  4. 面试问烂的 Spring MVC 过程
  5. 定义一个1 1=11 用c语言什么输出来,问题 A: C语言11.1(示例代码)
  6. sed 插入多行_Linux三剑客之sed
  7. CCNA-网络常用工具介绍篇
  8. JavaScript使用正则表达式进行邮箱表单验证实例
  9. Nginx模块开发—Nginx代码规范
  10. (第十三周)评论Final发布II
  11. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.1.1
  12. 我的CCNA笔记(二)
  13. 一个用户在同一时间只能登录一次
  14. opencv 头文件 包含 include 的问题
  15. CISP 考试教材《第 7 章 知识域:信息安全支撑技术》知识整理
  16. 基于Python实现四子棋游戏
  17. 【c++学习】int main(int argc, char** argv)命令行参数理解
  18. Oracle11g Dataguard配置
  19. Sa-token 之 SaManager
  20. app Token验证流程

热门文章

  1. php过去mysql数据表是空_PHP向mysql中写数据,在phpmyadmin中为空,直接打印有数据?...
  2. php jq异步上传图片,Jquery实现异步上传图片
  3. 聚类 python 代码_不足 20 行 Python 代码,高效实现 k-means 均值聚类算法
  4. pandas中如何选取某几列_【python】pandas中 loc amp; iloc用法及区别
  5. gram矩阵_推荐算法三视角:矩阵,图,时间线
  6. c语言结果九位数,C语言实例:九位累进可除数
  7. linux下编译httpd,Linux下编译安装Apache httpd 2.4
  8. HJ浇花(牛客竞赛 约束差分)
  9. PHP使用Switch语句判断星座,PHP的switch判断语句的“高级”用法详解 用switch语句怎样判断成绩的等级...
  10. mysql goldengate_oracle GoldenGate实现Oracle到MySQL数据平滑迁移