假设我有两个数据集。我有一周一周的用户尝试我的服务。
trials = [2,2,2,8,8,4]
我有一周一周的注册试用用户。
conversions = [1,0,2,4,8,3]
我可以通过这种方式快速完成:
conversion_rate = []
for n in range(len(trials)):
conversion_rate.append(conversions[n]/trials[n])
你能想到更优雅的方式吗?
奖励:结果列表是[0, 0, 1, 0, 1, 0]
的整数
,而不是花车清单。获取浮动列表的最简单方法是什么?
答案 0 :(得分:15)
使用zip:
[c/t for c,t in zip(conversions, trials)]
获得浮动的最优雅方法是升级到Python 3.x。
如果您需要使用Python 2.x,那么您可以写下:
>>> [float(c)/t for c,t in zip(conversions, trials)]
[0.5, 0.0, 1.0, 0.5, 1.0, 0.75]
或者,您可以在文件的开头添加:
from __future__ import division
但请注意,这会影响程序中各处的划分行为,因此您需要仔细检查是否有任何需要整数除法的地方,如果是,请写//
而不是{{1 }}
答案 1 :(得分:2)
怎么样
trials = [2,2,2,8,8,4]
conversions = [1,0,2,4,8,3]
conversion_rate = [conversion / trials[n] for n, conversion in enumerate(conversions)]
答案 2 :(得分:2)
不使用zip和float:
[1.0*conversions[n]/trials[n] for n in xrange(len(trials))]
答案 3 :(得分:1)
如果您正在使用numpy
,则可以使用以下提示:
import numpy as np
conversion_rate = np.divide(trials, conversions)
或使用广播:
import numpy as np
trials = np.array([2, 2, 2, 8, 8, 4])
conversions = np.array([1, 0, 2, 4, 8, 3])
conversion_rate = 1.0 * trials / conversions