小编Tro*_*rts的帖子

移动dask数据框中的所有行

在 Pandas 中,有一个方法 DataFrame.shift(n) 将数组的内容相对于索引移动 n 行,类似于 np.roll(a, n)。我似乎无法找到一种使用 Dask 获得类似行为的方法。我意识到使用 Dask 的分块系统可能难以管理诸如行移位之类的事情,但我不知道将每一行与后续行进行比较的更好方法。

我希望能够做的是:

import numpy as np
import pandas as pd
import dask.DataFrame as dd

with pd.HDFStore(path) as store:
    data = dd.from_hdf(store, 'sim')[col1]
    shifted = data.shift(1)

    idx = data.apply(np.sign) != shifted.apply(np.sign)
Run Code Online (Sandbox Code Playgroud)

为了创建一个布尔系列,指示数据中符号变化的位置。(我知道该方法也会捕获从有符号值到零的更改)然后我将使用布尔系列来索引不同的 Dask 数据框以进行绘图。

python numpy pandas dask

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

可变数量的构造函数参数取决于整数模板

我正在编写一个包装私有的容器存储类模板,std::array以便为它添加一些功能.模板参数化值的数量,如下所示:

template<size_t N> class Vector {
private:
    array<double, N> vals;
public:
    [...]
};
Run Code Online (Sandbox Code Playgroud)

我希望类的构造函数只接受N双精度来填充数组,但我找不到一个好方法来做到这一点.变量论证不提供一种机制来检查它们中有多少,所以它们是正确的.参数包不进行浮点提升,但如果我只能弄清楚如何使用它们,我愿意处理它.

我已经尝试在成员函数模板的答案中遵循该方法,参数的数量取决于整数模板参数,但我无法理解重要性enable_if<>::type=0部分.我试过天真地复制那些代码(虽然我更喜欢它是如何工作的.我看到人们::value在其他地方使用但是我找不到任何关于原因的文档)但是扩展生成的参数包不会似乎工作.我对参数包的另一个顾虑是,我不确定他们是否确保所有参数的类型都相同.

我已经尝试static_assert在构造函数的主体中运行初始化列表的大小,但当然列表的大小在编译时不是常量,所以这也不起作用.

这里有标准方法吗?我只是使用参数包错误吗?


更新: 我在上面链接的答案中得到的方法部分工作:

template<size_t N> class Vector {
private:
    array<double, N> vals;
public:
    template <typename ...T,
          typename enable_if<sizeof...(T) == N, int>::type = 0>
    Vector(T ...args) {
        vals = {args...};
    }
};
Run Code Online (Sandbox Code Playgroud)

现在的问题是enable_if模板中的术语意味着当我初始化a Vector时,例如,

Vector<3> V {1.0, 2.0, 3.0};
Run Code Online (Sandbox Code Playgroud)

它要求模板专业化Vector<3>::Vector<double, double, double, 0>而不是<double, double, double> …

c++ templates c++11

5
推荐指数
2
解决办法
1008
查看次数

标签 统计

c++ ×1

c++11 ×1

dask ×1

numpy ×1

pandas ×1

python ×1

templates ×1