【发布时间】:2020-05-10 02:20:09
【问题描述】:
我有两个类似的 numpy 数组
Population A
Score A Score B Answer
1 0.3 1
0 0.5 0
1 0.6 1
0 0.7 1
1 0.9 1
Population B
Score A Score B Answer
1 0.3 1
0 0.5 0
1 0.6 1
1 0.7 1
0 0.9 1
Sample Results are
ScoreB Ratio
0.3 1
0.5 1
0.6 1
0.7 1
我必须在每个总体中找到分数 B 的分数/值,高于该值的任何值都变为 1,否则为 0,例如,如果您在总体 A 中选择 0.5,则第一个值为 0,其余为 1,如果您选择 0.6例如,在人口 B 中,前两个值为 0,其余为 1。
我猜我可能在 while 循环中迭代地/算法地执行此操作,并且不创建或替换 scoreB 这样
Ratio = (counts(scoreA=1&scoreb=1&Answer=1) in population A/ counts(scoreA=1&scoreb=1&Answer=1) in population B) == 1
注意:分数 B 已排序,因此不必担心
【问题讨论】:
-
这听起来像
np.where(),但你的描述不是很清楚。也许您想要的输出样本会有所帮助。 -
添加了看到在这种情况下只有 0.3,0.5,0.6 和 0.7 产生相同的比率,只要你去 0.9 比率标准不匹配
-
比率很奇怪:对于 0.9,总体 B 中的计数为 0。你除以零吗?如果流行 B 中的计数小于流行 A 中的计数,你得到的比率是否大于 1?
标签: python arrays algorithm numpy loops