gpt4 book ai didi

python - 不支持延迟对象的真实性

转载 作者:行者123 更新时间:2023-12-01 08:58:25 25 4
gpt4 key购买 nike

我正在使用 dask 来延迟某些在我的代码库中返回系列的函数的计算。到目前为止,大多数操作似乎都按预期运行 - 除了我使用 np.average 之外。

我的函数返回一个pd.Series,然后我想计算加权平均值。

以下是非 dask 和 dask 版本:

import dask
import numpy as np
import pandas as pd

s = pd.Series([1,2,3])
a = np.average(s, weights=s)
print(a)

ds = dask.delayed(lambda: s)()
a = np.average(ds, weights=ds)
print(a.compute())

np.average 调用引发 TypeError:不支持延迟对象的真相

不确定我的用法的哪一部分是错误的。

最佳答案

问题是您正在 dask 延迟对象上调用 Numpy 函数np.average。 Numpy 函数不知道如何处理 Dask Delayed 对象,因此会引发错误。解决方案是也延迟 numpy 函数。

您可以执行以下操作:

a = dask.delayed(np.average)(ds, weights=ds)
a.compute()

这可行(你得到了答案),但它很可能不是你想要的。正在对数据调用单个函数 - 您确实进行了惰性操作,并且如果您有许多此类计算,则可能会获得并行性。然而,我想说像这样传递延迟的 pandas 系列是很不寻常的。

您可能想阅读 high level数组和数据帧接口(interface),其中分割系列和数组的逻辑已为您完成。

关于python - 不支持延迟对象的真实性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52646246/

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