我正在编写一个函数来从python中的文本中分割数字和其他一些东西.代码看起来像这样:
EN_EXTRACT_REGEX = '([a-zA-Z]+)'
NUM_EXTRACT_REGEX = '([0-9]+)'
AGGR_REGEX = EN_EXTRACT_REGEX + '|' + NUM_EXTRACT_REGEX
entry = re.sub(AGGR_REGEX, r' \1\2', entry)
Run Code Online (Sandbox Code Playgroud)
现在,这段代码在python3中工作得非常好,但它在python2下不起作用并得到" 无法匹配的组 "错误.
问题是,我需要支持这两个版本,我无法让它在python2中正常工作,尽管我尝试了其他各种方法.
我很好奇这个问题的根源是什么,是否有任何解决方法?
所以基本上,我试图计算两件事发生在一起的似然比.方程式足够直,但问题是我的数据相当大,有时中间操作溢出.
我目前正在为我的变量使用double,因此无法进行向上转换.
该方程还有对数和指数算子.但是我没有找到BigDecimal或类似类型的任何非基本数学函数.
另外,我已经尝试过尽可能地简化方程式.
我想知道我的选择是什么.这是我的代码:
c1 = unigramsInfo.get(w1)[0];
c2 = unigramsInfo.get(w2)[0];
c12 = entry.getValue()[0];
N = additionalInfo.get("tail")[1];
p = c2 / N;
p1 = c12 / c1;
p2 = (c2 - c12) / (N - c1);
likelihood = - 2 * ( c2 * Math.log(p) + (N - c2) * Math.log(1 - p)
- c12 * Math.log(p1) - (c1 - c12) * Math.log(1 - p1)
- (c2 - c12) * Math.log(p2)
- …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的 pyspark 数据框:
| id | time | cat |
-------------------------
1 t1 a
1 t2 b
2 t3 b
2 t4 c
2 t5 b
3 t6 a
3 t7 a
3 t8 a
Run Code Online (Sandbox Code Playgroud)
现在,我想按“id”将它们分组并将它们聚合成这样的 Map:
| id | cat |
---------------------------
| 1 | a -> 1, b -> 1 |
| 2 | b -> 2, c -> 1 |
| 3 | a -> 3 |
Run Code Online (Sandbox Code Playgroud)
我想我们可以使用 pyspark sql 函数的collect_list将它们收集为列表,然后我可以应用一些 UDF 函数将列表转换为 dict。但是有没有其他(更短或更有效)的方法来做到这一点?
bigdecimal ×1
double ×1
group-by ×1
java ×1
overflow ×1
pyspark ×1
python ×1
python-2.7 ×1
regex ×1