【发布时间】:2018-05-20 17:04:33
【问题描述】:
我是 python 新手,python 中的数组有问题。所以我有一个像这样的列表的数据,我给这个列表的变量名是 fitur:
[['F11', '1', '0', '0'], ['F2', '1', '1', '0'], ['F4', '1', '0', '0']]
然后我有一个条件为正和负的概率,索引[0]属于F11索引[1]属于F2,索引[2]属于F4
Here is positif (bpf_pos)
[0.42857142857142855, 0.5714285714285714, 0.5714285714285714]
and here is negatif (bpf_neg)
[0.14285714285714285, 0.2857142857142857, 0.2857142857142857]
我有公式:
f_pd_neg = (bpf_neg[i] ** float(uji[1])) * ((1 - bpf_neg[i]) ** (1 - float(uji[1])))
f_pd_pos = (bpf_pos[i] ** float(uji[1])) * ((1 - bpf_pos[i]) ** (1 - float(uji[1])))
所以这是我的问题,我想用 fitur 计算公式中的概率。例如
bpf_neg[0] ** 1 (from the list in F11) * ((1- bpf_neg[0] ** (1 - 1) 以此类推,直到列表 F11 中的值完成
我期望我有这样的输出
Positif is:
0 [0.571428571,0.571428571,0.428571429]
1 [0.428571429,0.571428571,0.571428571]
2 [0.571428571,0.428571429,0.428571429]
Negatif is:
0 [0.285714286,0.285714286,0.714285714]
1 [0.142857143,0.857142857,0.857142857]
2 [0.285714286,0.714285714,0.714285714]
这是我的代码:
d_neg = []
d_pos = []
for i, uji in enumerate(ab):
f_pd_neg = (bpf_neg[i] ** float(uji[1])) * ((1 - bpf_neg[i]) ** (1 - float(uji[1])))
f_pd_pos = (bpf_pos[i] ** float(uji[1])) * ((1 - bpf_pos[i]) ** (1 - float(uji[1])))
d_pos.append(f_pd_pos)
d_neg.append(f_pd_neg)
我试过float(uji[1:]) 我得到了错误TypeError: float() argument must be a string or a number
我该如何解决?我希望你能理解,因为我的英语很糟糕
【问题讨论】:
-
ab变量中有什么,你能举个例子吗 -
在
float(uji[1:])中,您将列表切片提供给float(...)- 它只能接受数字或字符串。不是列表的一部分。使用print(type(uji))查看它是什么类型。 How to debug small programs (#1) - 如果您提供真实的minimal verifyable complete example,您的意图可能会更清晰。 -
这是变量
[['F11', '1', '0', '0'], ['F2', '1', '1', '0'], ['F4', '1', '0', '0']]@zimdero -
uji的类型是<type 'list'>,那么我该如何解决@PatrickArtner -
uji是list类型,这意味着您可以将其切成uji[1:],它会给您['1','0','0'],但您不能将list转换为float,你想如何使用uji[1:]给我例子,我会告诉你结果
标签: python python-2.7 data-analysis