gpt4 book ai didi

python - if 语句条件不适用于循环中的最后一个 i

转载 作者:行者123 更新时间:2023-12-05 08:24:43 25 4
gpt4 key购买 nike

我写了 for 循环来计算条件熵的概率,但如果循环中最后一个 i 的语句不能正常工作。

我要遍历的数组:

joint_age_dia = np.c[data["Ageover50"],data["diabetic"]]
joint_age_dia
array([['True', 'yes'],
['False', 'yes'],
['False', 'no'],
['True', 'yes'],
['True', 'no'],
['True', 'yes'],
['False', 'no'],
['False', 'no'],
['True', 'yes'],
['False', 'no']], dtype=object)

我创建的用于获取 (Y|X=True)、(Y|X=False) 计数的 for 循环是

for i in range(len(joint_age_dia)):
if joint_age_dia[i][1] == 'yes' and joint_age_dia[i][0] == 'True':
yy_t += 1

if joint_age_dia[i][1] == 'yes' and joint_age_dia[i][0] == 'False':
yy_f += 1

if joint_age_dia[i][1] == 'no' and joint_age_dia[i][0] == 'True':
yn_t += 1

if joint_age_dia[i][1] == 'no' and joint_age_dia[i][0] == 'False':
yn_f += 1

else:
None

print(yy_t) # 4
print(yy_f) # 1
print(yn_t) # 2
print(yn_f) # 3

如果循环正常工作 yn_t 应该是 1 并且 yn_f 应该是 4 但我注意到当 i = 10 时它计算数组的最后一个列表错误(因为当左侧元素为“假”时它是“否” , yn_f 应该已经递增)。

我不知道哪里出了问题......

最佳答案

由于您有一个 numpy 数组,请使用矢量解决方案:

import pandas as pd
df = pd.DataFrame(joint_age_dia).value_counts()
print(df)

输出:

0      1  
False no 4
True yes 4
False yes 1
True no 1
dtype: int64

或者作为字典:

pd.DataFrame(joint_age_dia).value_counts().to_dict()

输出:

{('False', 'no'): 4,
('True', 'yes'): 4,
('False', 'yes'): 1,
('True', 'no'): 1}

如果真的,您需要变量:

yy_t, yy_f, yn_t, yn_f = (
pd.DataFrame(joint_age_dia).value_counts()
.reindex([('True', 'yes'), ('False', 'yes'), ('True', 'no'), ('False', 'no')])
)

print(yy_t, yy_f, yn_t, yn_f)
# (4, 1, 1, 4)

但这在我看来有点难看

关于python - if 语句条件不适用于循环中的最后一个 i,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73662984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com