- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Pandas v1.1.0。
在 pandas 文档中有一个很好的例子,说明如何使用 numba 来加速 rolling.apply()
操作here
import pandas as pd
import numpy as np
def mad(x):
return np.fabs(x - x.mean()).mean()
df = pd.DataFrame({"A": np.random.randn(100_000)},
index=pd.date_range('1/1/2000', periods=100_000, freq='T')
).cumsum()
df.rolling(10).apply(mad, engine="numba", raw=True)
我想使其适应 groupby 操作:
df['day'] = df.index.day
df.groupby('day').agg(mad)
工作正常。
df.groupby('day').agg(mad, engine='numba')
错误并给出
---------------------------------------------------------------------------
NumbaUtilError Traceback (most recent call last)
<ipython-input-21-ee23f1eec685> in <module>
----> 1 df.groupby('day').agg(mad, engine='numba')
~\AppData\Local\Continuum\anaconda3\envs\ds-cit-dev\lib\site-packages\pandas\core\groupby\generic.py in aggregate(self, func, engine, engine_kwargs, *args, **kwargs)
939
940 if maybe_use_numba(engine):
--> 941 return self._python_agg_general(
942 func, *args, engine=engine, engine_kwargs=engine_kwargs, **kwargs
943 )
~\AppData\Local\Continuum\anaconda3\envs\ds-cit-dev\lib\site-packages\pandas\core\groupby\groupby.py in _python_agg_general(self, func, engine, engine_kwargs, *args, **kwargs)
1068
1069 if maybe_use_numba(engine):
-> 1070 result, counts = self.grouper.agg_series(
1071 obj,
1072 func,
~\AppData\Local\Continuum\anaconda3\envs\ds-cit-dev\lib\site-packages\pandas\core\groupby\ops.py in agg_series(self, obj, func, engine, engine_kwargs, *args, **kwargs)
623
624 if maybe_use_numba(engine):
--> 625 return self._aggregate_series_pure_python(
626 obj, func, *args, engine=engine, engine_kwargs=engine_kwargs, **kwargs
627 )
~\AppData\Local\Continuum\anaconda3\envs\ds-cit-dev\lib\site-packages\pandas\core\groupby\ops.py in _aggregate_series_pure_python(self, obj, func, engine, engine_kwargs, *args, **kwargs)
681
682 if maybe_use_numba(engine):
--> 683 numba_func, cache_key = generate_numba_func(
684 func, engine_kwargs, kwargs, "groupby_agg"
685 )
~\AppData\Local\Continuum\anaconda3\envs\ds-cit-dev\lib\site-packages\pandas\core\util\numba_.py in generate_numba_func(func, engine_kwargs, kwargs, cache_key_str)
215 nopython, nogil, parallel = get_jit_arguments(engine_kwargs)
216 check_kwargs_and_nopython(kwargs, nopython)
--> 217 validate_udf(func)
218 cache_key = (func, cache_key_str)
219 numba_func = NUMBA_FUNC_CACHE.get(
~\AppData\Local\Continuum\anaconda3\envs\ds-cit-dev\lib\site-packages\pandas\core\util\numba_.py in validate_udf(func)
177 or udf_signature[:min_number_args] != expected_args
178 ):
--> 179 raise NumbaUtilError(
180 f"The first {min_number_args} arguments to {func.__name__} must be "
181 f"{expected_args}"
NumbaUtilError: The first 2 arguments to mad must be ['values', 'index']
我猜
engine=numba
它预计数据会略有不同。
最佳答案
自己也有这个问题。显然,要使用pandas + numba引擎,您需要以f(value, index)
格式实现自定义函数。 .
根据文档(GroupBy.transform):
If the 'numba' engine is chosen, the function must be a user definedfunction with values and index as the first and second argumentsrespectively in the function signature. Each group’s index will bepassed to the user defined function and optionally available for use.
f(x)
返回
int
我想在 groupby 中使用。让它与 numba 一起工作所需要的只是将函数修改为
f(values, index)
这样 numba 例程就会有一个有效的参数来将索引传递给函数。
def equal_weight(arr) -> int:
'''
returns a float of 1/n where 'n' is the number of rows
'''
return 1 / len(arr)
新功能,兼容numba引擎:
def equal_weight(values, index) -> int:
'''
returns a float of 1/n where 'n' is the number of rows
'''
return 1 / len(values)
关于python - Pandas :groupby 使用 numba 申请,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63254419/
我想将一个类对象传递给一个函数。我可以让它工作,但我想知道是否有我可以分配的类型?我有一个我正在尝试做的“最小”示例。 spec = [("a", float64),("b",float64)] @j
我有一个简单的函数来对扑克手牌进行排序(手牌是字符串)。 我用 rA,rB = rank(a),rank(b) 调用它,这是我的实现。没有 @jit(nopython=True) 也能很好地工作,但是
我在这里有一个简单的例子来帮助我理解使用 numba 和 cython。我是 numba 和 cython 的新手。我已经尽力结合所有技巧来使 numba 更快,并且在某种程度上,cython 也是如
我正在使用 numbas @jit 装饰器在 python 中添加两个 numpy 数组。如果我使用 @jit 与 python 相比,性能是如此之高。 然而,即使我传入 @numba.jit(nop
我需要为通用指标构建相异矩阵。由于我需要算法快速运行,所以我在 nopython 模式下使用了 numba 0.35。这是我的代码 import numpy as np from numba impo
Numba Cuda 有 syncthreads() 来同步一个 block 中的所有线程。如何在不退出当前内核的情况下同步网格中的所有 block ? 在 C-Cuda 中有一个 cooperati
有人尝试在Google合作伙伴中使用numba吗?我只是不知道如何在此环境中进行设置。 此刻,我陷入了错误library nvvm not found。 最佳答案 将此代码复制到单元格中。这个对我有用
我想编写一个函数,它既可以作为 jitted 函数运行,也可以作为普通 python 或对象模式 numba 运行,具体取决于 numba 是否能够进行类型推断。我实际上更喜欢普通的 python,但
我有一个非常简单的问题我无法解决。 我正在使用 Numba 和 Cuda。我有一个列表 T=[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0] 我想要一个包含列表元素的元组,如
我正在测试一些采用 numpy 数组的函数的 numba 性能,并比较: import numpy as np from numba import jit, vectorize, float64 im
我正在使用 Scipy 的 interpolate.interp1d 在 Python3 中插入一维数组。我想将它与 numba 一起使用,但不支持 scipy 和此功能。是否有 numba 支持
我是 Numba 的新手,我正在尝试使用 Numba(版本 0.54.1)在 Python 中实现旧的 Fortran 代码,但是当我添加 parallel = True 时,程序实际上变慢了.我的程
我需要在 Python 中创建一个位数组。到目前为止,我发现可以使用 bitarray 生成非常节省内存的数组。模块。 然而,我的最终目的是使用来自Numba 的@vectorize 装饰器。 . N
我认为这是一个简单的问题,但我发现 numba 文档缺乏关于如何将字符串类型与 numpy 数组和字典一起使用的信息。我有一个我想使用 numba 的函数,它需要一个邮政编码列表,然后是一个映射邮政编
假设我有两个功能 def my_sub1(a): return a + 2 def my_main(a): a += 1 b = mysub1(a) return b
在以下用于逻辑比较的 numba 编译函数中,性能下降的原因可能是什么: from numba import njit t = (True, 'and_', False) #@njit(boolean
我的代码使用如下列表的笛卡尔积: import itertools cartesian_product = itertools.product(list('ABCDEF'), repeat=n) n可
我正在使用 Numba(版本 0.37.0)来优化 GPU 代码。我想使用组合矢量化函数(使用 Numba 的 @vectorize 装饰器)。 导入和数据: import numpy as np f
我想知道在 numba 函数中计算两个列表的交集的最快方法。只是为了澄清:两个列表的交集示例: Input : lst1 = [15, 9, 10, 56, 23, 78, 5, 4, 9] lst2
我正在使用 Numba 非 python 模式和一些 NumPy 函数。 @njit def invert(W, copy=True): ''' Inverts elementwise
我是一名优秀的程序员,十分优秀!