小编Chr*_*ris的帖子

Python中的"变量// =值"语法是什么意思?

我遇到了代码语法d //= 2,其中d是一个变量.这不是任何循环的一部分,我不太明白.
有人可以开导我吗?

python python-2.x integer-division python-3.x floor-division

10
推荐指数
2
解决办法
1264
查看次数

python - 前缀和算法

我试图把握背后的前缀和概念的想法看着由Codility的前缀和课程介绍的例子在这里(蘑菇拾取问题)

我的理解是整个概念基于简单的属性,其中在数组A的两个位置A(pos_left,pos_right)之间找到所有元素的总和,使用第二个数组P,其中所有元素被连续求和并且搜索到的位置sum计算为
值(P(pos_right + 1)) - 值(P(pos_left)).

A 1 2 3 4 5  6
P 0 1 3 6 10 15 21
sum of all elements between A[2] and A[5] = 3+ 4 + 5 = 12
or using the prefix sums"   P[5+1] - P[2] = 15 -3 = 12 
Run Code Online (Sandbox Code Playgroud)

问题
在每个地方都有一条带有蘑菇的街道,由非空载体代表.鉴于采摘器的初始位置及其移动范围,可以寻找可能的最大蘑菇数量.

看一下这个例子,我不明白循环构造背后的逻辑.任何人都可以澄清这种算法的机制吗?

其次,我发现这个例子中的positoin索引非常混乱和麻烦.通常的做法是将前缀加上的矢量"移位"在开始时为零吗?(事实上​​,向量中的计数元素从python中的0开始,因为已经引起了一些混乱).

解决方案

def prefix_sums(A):
  n = len(A)
  P = [0] * (n + 1)
  for k in xrange(1, n + 1):
      P[k] = …
Run Code Online (Sandbox Code Playgroud)

python algorithm prefix-sum

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

如何在Presto/Hive中将日期格式YYYY-MM-DD转换为整数YYYYMMDD?

如何在Presto/Hive CONVERT中将格式的日期转换YYYY-MM-DD为整数YYYYMMDD

我试图将下面的列表转换为YYYYMMDD整数

WITH  all_dates  as (SELECT
    CAST(date_column AS DATE) date_column
FROM
    (VALUES
        (SEQUENCE(FROM_ISO8601_DATE('2017-07-01'),
                  FROM_ISO8601_DATE('2017-11-15'),
                  INTERVAL '1' DAY)
        )
    ) AS t1(date_array)
CROSS JOIN
    UNNEST(date_array) AS t2(date_column)
    )
Run Code Online (Sandbox Code Playgroud)

我试过这样的东西,但它不起作用

   SELECT
   CAST(
      CAST(year(date_column) AS VARCHAR(4)) +
      right('0' + CAST(month(date_column) AS VARCHAR(2)), 2) +
      right('0' + CAST(day(date_column) AS VARCHAR(2)), 2) 
   AS DATETIME)
   FROM all_dates
Run Code Online (Sandbox Code Playgroud)

sql hadoop hive date presto

6
推荐指数
2
解决办法
6262
查看次数

python:如何融化保留特定顺序/自定义排序的数据框

我有一个数据框 df

Cat  B_1 A_2 C_3
A      1   2   3
B      4   5   6
C      7   8   9
Run Code Online (Sandbox Code Playgroud)

我想将其转换为数据框,以便 Label 列中的行遵循每个类别的 df 列的顺序。

Desired output

    Cat Label Value
    A     B_1    1
    A     A_2    2
    A     C_3    3
    B     B_1    4
    B     A_2    5
    B     C_3    6
    C     B_1    7
    C     A_2    8
    C     C_3    9  
Run Code Online (Sandbox Code Playgroud)

当我尝试

pd.melt(df, id_vars=["Cat"], var_name="Label",value_name="Value")
Run Code Online (Sandbox Code Playgroud)

我在标签列中丢失了所需的顺序,结果排序如下,

Cat Label Value
A     B_1    1
B     B_1    4
C     B_1    7
A     A_2    2
...
Run Code Online (Sandbox Code Playgroud)

可以在熔化函数中强制指定所需的行顺序吗?如果没有的话,如何实现这种自定义排序呢?


更新

我重命名了标签,因为它们不遵循字母顺序,因此简单的排序不起作用

python dataframe pandas

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