Python:为数组中的每个值指定一个值

2024-06-28 14:44:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手。下面的代码基于来自csv数据集的输入为newprobValues中的每个键创建一系列数值。我希望能够通过每个arange()函数,通过为每个新的数值指定另一个值(即0、1、2),来识别哪些值是通过每个arange()函数创建的

现在,所有新的数值都聚合到一个列表中,我从列表中随机抽取数字,并在使用后删除它们(在一个心理变态任务中)。任务中的数据被输出到另一个csv文件中,我希望在新数值列旁边有一列0s、1s和2s,这样我就可以解析它们进行分析。在

例如: newprobValues1=np.arange公司(low1_p,high1_p,step=SV)应该有第二个值1与之关联,这样我就可以将这些值输出到csv文件中的单独列中。在

代码:

newprobValues = {.17:[],
         .28:[],
         .54:[],
         .84:[],
         .96:[],
         .99:[],}

for npv in newprobValues: 
    mu = probs.ix[(probs['DDPD']==npv),['Value']]
    SV = hyperlaw(((1-npv)/npv), k_prob) #yields subjective value of one dollar at given delay
    mu = float(mu['Value'])
    generating_values_prob[npv] = {'mu':mu, 'SV':SV}
    if mu >= 25.50:
        #set desired ran
        low1_p, high1_p = float(mu-(4*SV)), float(mu-.01) # -.01 is hack to prevent arange() from      rounding uneven ceil() up to a fifth iteration
        low2_p, high2_p = float(mu+SV), float(mu+(5*SV)-.01) 
        low3_p, high3_p = 20.5, 80
        newprobValues1 = np.arange(low1_p, high1_p, step = SV) #generate hard values below indiff point
        newprobValues2 = np.arange(low2_p, high2_p, step = SV) #generate hard values above indiff point
        newprobValues3 = np.arange(low3_p, high3_p, step = 6.612)**
        newprobValues[npv] = np.concatenate([newprobValues1, newprobValues2, newprobValues3])
        newprobValues[npv] = np.insert(newprobValues[npv], 0, mu)
        newprobValues[npv] = newprobValues[npv].tolist()

我试过密码:

^{pr2}$

但是我得到了一个字典,里面有0,当我真的需要为每个数字分配0时——这样当我连接无序数组时,我仍然可以识别生成每个值的arange()函数


Tags: csv函数stepnpfloat数值valuessv
2条回答

我不确定这是否是您想要的,但是内置的enumerate()函数将生成值对,每对的第一个成员是一个索引。因此,例如,enumerate([12, 35, 17)将生成序列(0, 12), (1, 35), (2, 17)。在

换成for循环来读取是否有效

for index, npv in enumerate(newprobValues):
    ...

    newprobValues1 = {'value': np.arange(low1_p, high1_p, step = SV), 'type': index}

我想知道?在

我看到您对新计算的ndarray所做的最后一件事是 使用它的tolist()方法。在

# last line of your code
newprobValues[npv] = newprobValues[npv].tolist()

如果你想要的是一张单子,你不必费尽周折 numpy。。。更自然的方法是

^{pr2}$

稍后,当您想使用序列号i时,可以这样做

result  = use(newprobValues[npv][i])

或者,使用列表解包

for npv in newprobValues:
    mu, seq1, seq2, seq3 = newprobValues[npv]
    ...

相关问题 更多 >