Python TypeError:float()参数
我是python新手,python中的数组有问题。所以我有一个类似这样的列表,我给这个列表的变量名是fitur:Python TypeError:float()参数,python,python-2.7,data-analysis,Python,Python 2.7,Data Analysis,我是python新手,python中的数组有问题。所以我有一个类似这样的列表,我给这个列表的变量名是fitur: [['F11', '1', '0', '0'], ['F2', '1', '1', '0'], ['F4', '1', '0', '0']] 然后我有一个条件为positif和negatif的概率,在索引[0]中属于F11索引[1]属于F2索引[2]属于F4 Here is positif (bpf_pos) [0.42857142857142855, 0.571428571428
[['F11', '1', '0', '0'], ['F2', '1', '1', '0'], ['F4', '1', '0', '0']]
然后我有一个条件为positif和negatif的概率,在索引[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(从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()参数必须是字符串或数字
我该怎么解决呢?我希望你能理解,因为我的英语很糟糕@RazBarb试试这个,我想我能理解,结果是一样的
lst = [['F11', '1', '0', '0'], ['F2', '1', '1', '0'], ['F4', '1', '0', '0']]
bpf_pos = [0.42857142857142855, 0.5714285714285714, 0.5714285714285714]
bpf_neg = [0.14285714285714285, 0.2857142857142857, 0.2857142857142857]
d_neg = []
d_pos = []
for i, uji in enumerate(lst):
f_pd_neg = []
f_pd_pos = []
for x in uji[1:]:
f_pd_neg.append(round((bpf_neg[i] ** float(x)) * ((1 - bpf_neg[i]) ** (1 - float(x))), 9) * 10)
f_pd_pos.append(round((bpf_pos[i] ** float(x)) * ((1 - bpf_pos[i]) ** (1 - float(x))), 9) * 10)
d_neg.append(f_pd_neg)
d_pos.append(f_pd_pos)
for i, neg in enumerate(d_neg):
print(i, neg)
for i, pos in enumerate(d_pos):
print(i, pos)
输出
# pos
0 [0.142857143, 0.857142857, 0.857142857]
1 [0.285714286, 0.285714286, 0.714285714]
2 [0.285714286, 0.714285714, 0.714285714]
# neg
0 [0.428571429, 0.571428571, 0.571428571]
1 [0.571428571, 0.571428571, 0.428571429]
2 [0.571428571, 0.428571429, 0.428571429]
每列乘以10后输出
[1.4285714299999999, 8.57142857, 8.57142857]
[2.8571428599999997, 2.8571428599999997, 7.142857139999999]
[2.8571428599999997, 7.142857139999999, 7.142857139999999]
[4.28571429, 5.71428571, 5.71428571]
[5.71428571, 5.71428571, 4.28571429]
[5.71428571, 4.28571429, 4.28571429]
在
ab
变量中有什么,你能给出一些例子吗float(uji[1:])
你正在向float(…)
输入一个列表片-它只能接受一个数字或字符串,不能接受列表片。使用print(type(uji))
查看它是什么类型。-如果您提供一个实数,您的意图可能会更清楚。这是变量[['F11','1','0','0'],['F2','1','1','0'],['F4','1','0','0']]
@zimderothuji
的类型是
,那么我如何修复@PatrickArtneruji
的类型是list
这意味着你可以通过uji[1:][/code>将它分割成['1','0','0']
但你不能将list
转换为typefloat
,你想如何使用uji 1:]
给我举个例子,我将向您展示结果。非常感谢,如果您不介意我如何将输出中的每一列相乘,我还有一个问题@zimdero@RozBarb检查这个例子,我将每列乘以10,