小编Ato*_*pat的帖子

Python 2和3'重新'不一致

我正在编写一个函数来从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中正常工作,尽管我尝试了其他各种方法.

我很好奇这个问题的根源是什么,是否有任何解决方法?

python regex python-2.7

13
推荐指数
1
解决办法
780
查看次数

Java双溢出

所以基本上,我试图计算两件事发生在一起的似然比.方程式足够直,但问题是我的数据相当大,有时中间操作溢出.

我目前正在为我的变量使用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)

java double overflow bigdecimal

5
推荐指数
1
解决办法
2059
查看次数

如何在 Pyspark 数据框中分组后收集地图?

我有一个像这样的 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。但是有没有其他(更短或更有效)的方法来做到这一点?

group-by pyspark

1
推荐指数
1
解决办法
3156
查看次数

标签 统计

bigdecimal ×1

double ×1

group-by ×1

java ×1

overflow ×1

pyspark ×1

python ×1

python-2.7 ×1

regex ×1