为了账号安全,请及时绑定邮箱和手机立即绑定

使用多个列表中的值创建数组

使用多个列表中的值创建数组

手掌心 2021-09-28 13:43:12
我创建了一些代码,它基本上创建了 100 个大小不断增加的列表,因此第一个列表只有一个元素,第二个列表有两个元素等。我设法创建了一些代码,它返回每个列表的最小值以及该值的索引. 我需要做的是能够将所有这些值编译成一个包含 100 个元素的数组。有人可以看看我的代码并帮助我解决这个问题吗?我尝试使用循环,但无法产生任何结果这是我正在使用的代码def optimisation(c,n): import numpy as np import itertools optimal=n*[0] #create empty set for optimal values for each segment optimal[0]=0 #set error value for first partition equal to zero for j in range(2,n): #finds the minimum error for each partition     samples=[]     for i in range(1,j): #finds the minimal error for each line segment         samples.append(find_error(i,j))     samples=np.trim_zeros(samples)     #print(samples)     val=n*[0]     idx=n*[0]     (val, idx) = min((val, idx) for (idx, val) in enumerate(samples))     print(val,idx) for j in range(1,n):    for i in range(1,j):        optimal[j]= val+c+min(optimal[i-1])每当给出命令时,此代码都会产生如下所示的输出optimisation(5,100)这将生成左侧显示的每个列表的最小值列表及其右侧的相应索引。我不会展示包含所有元素的完整列表,因为大小会非常大。我试图将所有这些值编译成一个数组,使其具有 [0.05234944,0.23141890982,...,416.971899107] 的形式和一个单独的索引,以便它具有 [0,0,.. .,93]
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

由于您没有将其包含在您的帖子中,因此我制作了一个模型find_error功能


find_error = lambda i, j: random.random()

除了创建随机值之外,它并没有真正做任何事情。当然,您需要使用自己的函数。


另外,我不知道你试图做什么


for j in range(1, n):

    for i in range(1, j):

        optimal[j] = val + c + min(optimal[i - 1])

这将导致错误,因为min需要一个序列但optimal[i - 1]总是一个整数。


我添加了两个列表val_list和idx_list


val_list = []

idx_list = []

它将存储您的值并最终打印它们。


import itertools

import numpy as np

import random


find_error = lambda i, j: random.random()


def optimisation(c, n):

    val_list = []

    idx_list = []

    optimal = n * [0]         # create empty set for optimal values for each segment

    optimal[0] = 0            # set error value for first partition equal to zero

    for j in range(2, n):     # finds the minimum error for each partition

        samples = []

        for i in range(1, j): # finds the minimal error for each line segment

            samples.append(find_error(i, j))

        samples = np.trim_zeros(samples)

        #print(samples)

        val = n * [0]

        idx = n * [0]

        (val, idx) = min((val, idx) for (idx, val) in enumerate(samples))

        #print(val, idx)

        val_list.append(val)

        idx_list.append(idx)

    print(val_list)

    print(idx_list)

    #for j in range(1, n):

    #    for i in range(1, j):

    #        optimal[j] = val + c + min(optimal[i - 1])


optimisation(5, 100)

哪个打印:


[0.6748920956425049, 0.20157630160777396, 0.541618597753885, 0.2768964675507879, 0.2976946308913999, 0.3766115048894233, 0.13759194561337484, 0.14987103061621476, 0.014534443068388692, 0.0031480380328120505, 0.034201372897887716, 0.062040806572080553, 0.12730306740011677, 0.24416492868734152, 0.16290838010569786, 0.0018081174520545584, 0.08755932761277996, 0.019842603354791377, 0.020590886194172042, 0.0036695714888764774, 0.12112028957966736, 0.011358619347358823, 0.0066146447764062755, 0.001394609349268272, 0.029586896510528815, 0.002756814742788438, 0.0583562604851291, 0.04284009994467686, 0.016023085954640637, 0.022566876451069584, 0.033772524651475844, 0.005337819133243049, 0.008672534870379667, 0.07821234490854523, 0.039383235142540496, 0.06648877424948574, 0.02217050629348072, 0.0011878402013764111, 0.0076300194701606205, 0.05055673273571437, 0.005344908265560777, 0.007028301085901245, 0.04165421018218529, 0.049295508008472266, 0.05093904397035376, 0.0034540854779047114, 0.02459850682010234, 0.0025335204612035866, 0.05614152881910395, 0.006084903262635, 0.0009059035342229294, 0.01200570503260534, 0.02220929842526087, 0.015366700312140713, 0.00958513758114643, 0.07156333927540381, 0.04216894275052541, 0.008754644639532905, 0.0002495576990957371, 0.008797367341674467, 7.564443573293556e-05, 0.024383979420044333, 0.02788410790756546, 0.021374008158427937, 0.0036953803742704183, 0.013104935266165296, 0.002671114966841137, 0.009159016248525886, 0.005064956945909693, 0.003681503103729278, 0.0009758561877718508, 0.04040161906291373, 0.0004948154900136226, 0.04624146511169147, 0.006594572334752913, 0.003143832522642165, 0.007757875588931151, 0.0030850898821545014, 0.027203566823009617, 0.01721978081614073, 0.0029359570317655237, 0.01059502437128057, 0.006236364658167459, 0.004946834269317746, 0.0032451574275564887, 0.016990675372012154, 0.004935140406089111, 0.0006326108410349418, 0.0036785177995684037, 0.0017698129491926506, 7.475397610190448e-05, 0.0032981939769008983, 0.014765189588278771, 0.012874838822510615, 0.0024783407934703128, 0.006636389782331609, 0.003974376946173419, 0.025291230241184626]

[0, 1, 2, 3, 2, 3, 4, 5, 6, 6, 0, 9, 10, 1, 11, 4, 11, 10, 8, 15, 10, 5, 9, 22, 10, 20, 20, 22, 5, 14, 24, 15, 5, 20, 3, 17, 29, 15, 24, 0, 13, 27, 40, 37, 37, 34, 21, 15, 6, 19, 8, 1, 32, 6, 43, 52, 56, 45, 49, 57, 13, 3, 22, 24, 54, 24, 34, 35, 5, 62, 41, 31, 59, 34, 71, 49, 47, 7, 42, 61, 16, 20, 58, 60, 40, 85, 57, 40, 19, 71, 31, 83, 73, 35, 5, 91, 42, 29]



查看完整回答
反对 回复 2021-09-28
  • 1 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号