相关疑难解决方法(0)

独立滚动矩阵的行

我有一个矩阵(准确地说是2d numpy ndarray):

A = np.array([[4, 0, 0],
              [1, 2, 3],
              [0, 0, 5]])
Run Code Online (Sandbox Code Playgroud)

我想A根据另一个数组中的滚动值独立滚动每一行:

r = np.array([2, 0, -1])
Run Code Online (Sandbox Code Playgroud)

也就是说,我想这样做:

print np.array([np.roll(row, x) for row,x in zip(A, r)])

[[0 0 4]
 [1 2 3]
 [0 5 0]]
Run Code Online (Sandbox Code Playgroud)

有没有办法有效地做到这一点?也许使用花哨的索引技巧?

python performance numpy

15
推荐指数
3
解决办法
2575
查看次数

动态窗口上的滚动总和

我是 python 新手,上次编码是在 80 年代中期,所以我感谢您的耐心帮助。

看来 .rolling(window) 要求窗口是固定整数。我需要一个滚动窗口,其中窗口或回溯期是动态的并由另一列给出。

在下表中,我查找 Lookbacksum,它是 Lookback 列指定的数据的滚动总和。

d={'Data':[1,1,1,2,3,2,3,2,1,2],
   'Lookback':[0,1,2,2,1,3,3,2,3,1],
   'LookbackSum':[1,2,3,4,5,8,10,7,8,3]}
df=pd.DataFrame(data=d)
Run Code Online (Sandbox Code Playgroud)

例如:

   Data  Lookback  LookbackSum
0     1         0            1
1     1         1            2
2     1         2            3
3     2         2            4
4     3         1            5
5     2         3            8
6     3         3           10
7     2         2            7
8     1         3            8
9     2         1            3
Run Code Online (Sandbox Code Playgroud)

python pandas

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

Python中反向对角线的滚动平均值

我有一个先前已移位的pandas数据透视表,现在看起来像这样:

pivot
    A    B    C    D    E
0  5.3  5.1  3.5  4.2  4.5
1  5.3  4.1  3.5  4.2  NaN
2  4.3  4.1  3.5  NaN  NaN
3  4.3  4.1  NaN  NaN  NaN
4  4.3  NaN  NaN  NaN  NaN
Run Code Online (Sandbox Code Playgroud)

我试图通过反向对角线迭代每一列来计算具有可变窗口(在这种情况下为3和4个周期)的滚动平均值,并尝试将该值存储在新的数据帧中,如下所示:

expected_df with a 3 periods window
    A    B    C    D    E
0  4.3  4.1  3.5  4.2  4.5

expected_df with a 4 periods window
    A    B    C    D    E
0  4.5  4.3  3.5  4.2  4.5
Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试对原始数据透视表进行子集化,并创建一个不同的数据框,只包含每列的指定窗口值,然后计算平均值,如下所示:

subset
    A    B    C    D    E
0 …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

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

标签 统计

python ×3

numpy ×2

pandas ×2

performance ×1