【发布时间】:2018-11-07 00:40:20
【问题描述】:
我有一个按列引用的 numpy 数组,例如,df['x']、df['y']。
将它提供给 Numba 以便我可以在 nopython 模式下运行该功能的最佳方法是什么?
或者在 Numba 中处理数据框的最佳方法是什么,以便我可以按名称访问列?
【问题讨论】:
标签: python pandas numpy jit numba
我有一个按列引用的 numpy 数组,例如,df['x']、df['y']。
将它提供给 Numba 以便我可以在 nopython 模式下运行该功能的最佳方法是什么?
或者在 Numba 中处理数据框的最佳方法是什么,以便我可以按名称访问列?
【问题讨论】:
标签: python pandas numpy jit numba
numba 旨在直接使用 NumPy 数组。因此,您不应该将数据帧或结构化数组提供给 numba 函数。您可以将数组作为单独的参数提供。例如:
from numba import njit
@njit
def func(A, B):
# some logic
arr = A + B
return arr
df['z'] = func(df['x'].values, df['y'].values)
numba 函数中解压二维数组这是一种特殊情况,您的数据框系列都具有相同的类型。如果您不确定您的系列类型,请查看df.dtypes。您可以提供单个数组并在 numba 内执行解包:
@njit
def func(df_values):
A, B = df_values[:, 0], df_values[:, 1]
# some logic
arr = A + B
return arr
df['z'] = func(df[['x', 'y']].values)
【讨论】: