我是python的新手。对于 newprobValues 中的每个键,下面的代码根据csv数据集的输入创建一系列数值。我希望能够通过为每个 arange()函数创建哪些值,方法是为每个新数值赋值另一个值(即0,1,2)
现在,所有新的数值都会聚合到一个列表中,我会从该列表中随机抽取数字并在使用后删除它们(在心理学PsychoPy任务中)。来自任务的数据输出到另一个csv文件中,我希望在新数值列旁边有一个0,1和2列,以便我可以解析它们进行分析。
例如: 来自 newprobValues1 = np.arange(low1_p,high1_p,step = SV)的每个值都应该有一个与之关联的第二个值,这样我就可以将这些值输出到一个单独的列中。 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()
我试过了代码:
newprobValues1 = {'value': np.arange(low1_p, high1_p, step = SV), 'type': 0}
但我得到一个字典,其中包含0,当我真的需要为每个数字分配0时 - 这样当我连接shuffle数组时,我仍然可以识别生成每个值的arange()
函数< / p>
答案 0 :(得分:1)
我看到你用新计算的ndarray
做的最后一件事是
使用其tolist()
方法。
# last line of your code
newprobValues[npv] = newprobValues[npv].tolist()
如果你想要的是一个列表,你不需要经历箍
numpy
......更自然的方法是
newprobValues[npv].append(mu)
newprobValues[npv].append(newprobValues1)
newprobValues[npv].append(newprobValues2)
newprobValues[npv].append(newprobValues3)
稍后,如果您想使用序列号i
,可以执行
result = use(newprobValues[npv][i])
或使用列表解包
for npv in newprobValues:
mu, seq1, seq2, seq3 = newprobValues[npv]
...
答案 1 :(得分:0)
我不确定这是你想要的,但是内置的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}
我想知道?