gpt4 book ai didi

python - 在 Pandas 面板上广播乘法

转载 作者:太空宇宙 更新时间:2023-11-04 05:42:24 26 4
gpt4 key购买 nike

我有一个长、宽、浅的 Pandas 面板。实际上它更大,但为了举例方便,假设它是 2x5x6:

panel=pd.Panel(pd.np.random.rand(2,3,6))

我有一个 Series,它是最短维度的长度 - 在本例中为 2:

series=pd.Series([0,1])

我想通过在其他两个轴上广播系列来将面板乘以系列。

  1. 使用 panel.mul 是行不通的,因为我认为它只能采用 PanelDataFrame

    panel.mul(series) # 返回 None

  2. 使用 panel.apply(lambda x: x.mul(series), axis=0) 有效,但似乎对系列的每个组合进行计算,在本例中为 3x6 =18,但实际上 >1m 系列,所以非常慢。

  3. 使用 pd.np.multiply 似乎需要一个非常笨拙的结构:

    pd.np.multiply(panel, pd.np.asarray(series)[:, pd.np.newaxis, pd.np.newaxis])

有没有更简单的方法?

最佳答案

我不认为你最后的做法在概念上有什么问题(而且我想不出更简单的方法)。一种更惯用的写法是

import numpy as np
panel.values * (series.values[:,np.newaxis,np.newaxis])

使用 values 返回 pandas 对象的底层 numpy 数组。

关于python - 在 Pandas 面板上广播乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33427899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com