Python:在 Numba 中创建和复制 numpy 数组?
Python: creating and copying numpy arrays in Numba?
我经常使用 Numba 来加速许多无法矢量化的循环,否则会非常慢。
我的问题是:
Numba 函数可以创建 numpy 数组吗?我还没有找到方法:np.zeros 之类的函数在 Numba 中不起作用。
我现在做的是创建空数组(初始化为零或
NaNs) 在 Numba 之外并将它们传递给我的 Numba 函数,该函数
然后根据我的循环计算填充它们。
- 坎巴
做一个 numpy 数组的深拷贝?我经常需要处理许多数组
大小相同。 Numba 可以 运行
array2 = array1
,但是 array2
成为对 array1 的引用(改变一个改变另一个)。
- 当我有很多输入和输出的非 Numba 函数时,我
喜欢创建没有输入和输出方法的 类。这个
我可以 运行 这样的方式:
我的输入。input_1= foo1
我的输入。input_2 = foo2
我的输出=我的函数(我的输入)
当我有 20 个输入和 20 个输出时,这很方便。 Numba 可以支持这样的东西吗?
Numba 正在积极开发中,因此您的问题的答案取决于版本。在 Numba >0.19 中,您可以在 nopython
模式下创建 numpy 数组。所有支持的 numpy 构造都列在:
http://numba.pydata.org/numba-doc/0.20.0/reference/numpysupported.html
arr.copy()
也支持 nopython
模式,至少在 0.20(我检查过的地方)。
在传递包含数组作为属性的对象方面,您可以在对象模式nopython=False
中执行此操作,但在nopython
模式下不起作用。然后你必须检查你得到什么样的加速。在这种情况下,Numba 可能能够进行一些后续的循环提升。
我的建议是,如果可能的话,及时了解 Numba 版本。他们添加了很多功能,根据我的经验,他们还修复了很多错误。
我经常使用 Numba 来加速许多无法矢量化的循环,否则会非常慢。 我的问题是:
Numba 函数可以创建 numpy 数组吗?我还没有找到方法:np.zeros 之类的函数在 Numba 中不起作用。 我现在做的是创建空数组(初始化为零或 NaNs) 在 Numba 之外并将它们传递给我的 Numba 函数,该函数 然后根据我的循环计算填充它们。
- 坎巴
做一个 numpy 数组的深拷贝?我经常需要处理许多数组
大小相同。 Numba 可以 运行
array2 = array1
,但是 array2 成为对 array1 的引用(改变一个改变另一个)。 - 当我有很多输入和输出的非 Numba 函数时,我 喜欢创建没有输入和输出方法的 类。这个 我可以 运行 这样的方式:
我的输入。input_1= foo1
我的输入。input_2 = foo2
我的输出=我的函数(我的输入)
- 坎巴
做一个 numpy 数组的深拷贝?我经常需要处理许多数组
大小相同。 Numba 可以 运行
当我有 20 个输入和 20 个输出时,这很方便。 Numba 可以支持这样的东西吗?
Numba 正在积极开发中,因此您的问题的答案取决于版本。在 Numba >0.19 中,您可以在 nopython
模式下创建 numpy 数组。所有支持的 numpy 构造都列在:
http://numba.pydata.org/numba-doc/0.20.0/reference/numpysupported.html
arr.copy()
也支持 nopython
模式,至少在 0.20(我检查过的地方)。
在传递包含数组作为属性的对象方面,您可以在对象模式nopython=False
中执行此操作,但在nopython
模式下不起作用。然后你必须检查你得到什么样的加速。在这种情况下,Numba 可能能够进行一些后续的循环提升。
我的建议是,如果可能的话,及时了解 Numba 版本。他们添加了很多功能,根据我的经验,他们还修复了很多错误。