我的函数必须编译成jit,但是我得到了下面的弃用警告:
我如何解决这个问题,所以这个问题是固定的?(这样我就不必害怕这个功能在将来不能正常工作)
e_labeling.py:418: NumbaWarning:
Compilation is falling back to object mode WITH looplifting enabled because Function "get_result" failed type inference due to: non-precise type array(pyobject, 1d, C)
During: typing of
我在nopython模式下使用Numba (0.44)和Numpy。目前,Numba不支持跨越任意轴的Numpy聚合函数,它只支持在整个数组上计算这些聚合。考虑到这种情况,我决定采取行动,创造一些胆量。
代码:
np.min(array) # This works with Numba 0.44
np.min(array, axis = 0) # This does not work with Numba 0.44 (no axis argument allowed)
下面是一个用于复制np.min(array)的shim示例
import numpy as np
import numba
我正在尝试在CUDA GPU上运行这段简单的代码。我使用的模块是numba.cuda import numba
from numba import cuda
@numba.cuda.jit
def function_4(j, k):
l = j + k
return l
l = function_4(1, 2)
print(l) 输出: Traceback (most recent call last):
File "/home/amu/Desktop/RL_framework/help_functions/test2.py", line 9, in
这是我的密码。
from numba import jit
import numpy as np
import time
from pandas.core.common import flatten
from numba import njit
b_wi=[[1,2,3,4],[6,7,8,9,10,11]] #b_wi is a subset of x
f_wi=[[5,4,2,7,9],[5,4,3,7,2,3,4]]
# @jit(nopython=True)
def stopF_w(x,b_wi,f,di):
if di=='left':
r
Numba可以读取文件吗?
我尝试使用标准的Numpy方法save和load,但得到了一个不支持的错误。
Numba还可以处理其他格式吗?如果不是,当需要从文件中读取并且仍然想要使用Numba的功能时,应该怎么做?
这是我尝试过的:
import numpy as np
from numba import njit
a = np.random.randn(400, 400)
np.save('test', a)
@njit
def f():
a = np.load('test.npy')
return a
b = f()
> TypingE
我试图解决一个线性系统使用numba与GPU处理使用CUDA。
我已经安装了所有相关的软件包,并对其进行了测试,因此,我的GPU和CUDA等似乎设置得很好。
我的代码是:
import numpy as np
import time
from numba import vectorize, cuda
@vectorize(['float64(float64, float64)'], target='cuda')
def solver(A, b):
return np.linalg.solve(A, b)
def main():
A =
接下来,我从获得了如下代码:
@jit(float_[:,:,:](float_[:,:], int_[:], int_))
def train_function(X, y, H):
# do lots of stuff, including setting the arrays g and g_per_round like this:
g = np.zeros((no_features, no_classes))
g_per_round = np.zeros((H, no_features, no_classes))
# do more stuff, th
此代码失败:
import numpy as np
from numba import jit
import scipy.special as sp
@jit(nopython=True)
def f(a):
return sp.xlogy(a, a)
a = np.array([1,2,0,1], dtype=float)
f(a)
它给出了以下错误
TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Unknown attribute 'xlogy' of type
为了加快xarray包的计算速度,我尝试在函数中添加numba guvectorize,但是有几个问题:
如果我编写两个函数:read_pr和day_clim,则day_clim的输入不再是xarray,因为guvectorize被设置为float64[:], float64[:]。因此,groupby函数不起作用。我也尝试过xr.core.dataarray.DataArray[:], xr.core.dataarray.DataArray[:],但是错误弹出了NameError: name 'xr' is not defined。
我也想将@guvectorize应
Numba似乎是加速执行数字代码的一个很好的解决方案。但是,当分配给数组时,Numba似乎比标准Python代码慢。考虑下面的示例,比较有/没有Numba的四种备选方案,并写入数组/标量:
(为了专注于这个问题,我们的计算非常简单,即分配给标量单元格,而分配给数组单元格)
@autojit
def fast_sum_arr(arr):
z = arr.copy()
M = len(arr)
for i in range(M):
z[i] += arr[i]
return z
def sum_arr(arr):
z = arr.copy
"test_numba“下面的函数给出了一个错误:”无法键入空列表“,但是它不需要numba编译就能工作。
def test(list_test,count):
test_list =[]
for all in list_test:
test_list.append(all)
if count ==1:
return np.asarray(test_list, dtype=int)
else:
return np.asarray([1,2,3,4],dtype=int)
test_numba
我正在研究如何最好地比较使用numba编译的python函数中的字符串(没有python模式,python 3)。
用例如下:
import numba as nb
@nb.jit(nopython = True, cache = True)
def foo(a, t = 'default'):
if t == 'awesome':
return(a**2)
elif t == 'default':
return(a**3)
else:
...
但是,将返回以下错误:
In
我有一个用于操作的大数组,例如,矩阵转置。numba要快得多:
#test_transpose.py
import numpy as np
import numba as nb
import time
@nb.njit('float64[:,:](float64[:,:])', parallel=True)
def transpose(x):
r, c = x.shape
x2 = np.zeros((c, r))
for i in nb.prange(c):
for j in range(r):
x2[i,
我编写了这个python函数,我相信它将被移植到numba。不幸的是,它没有,而且我也不确定我是否理解错误:Invalid use of getiter with parameters (none).
它需要知道发电机的类型吗?是因为它返回可变长度的元组吗?
from numba import njit
# @njit
def iterator(N, k):
r"""Numba implementation of an iterator over tuples of N integers,
such that sum(tuple) == k.
我试过运行这段代码
@cuda.jit
def arr():
a = np.array([1., 2., 3., 4.], dtype=np.float32)
arr()
但是它导致了这个错误-- TypingError: Failed in nopython mode pipeline (step: nopython frontend) Use of unsupported NumPy function 'numpy.array' or unsupported use of the function. --我不明白为什么会发生这种情况,难道cuda.jit不应该支持大
我正在学习如何使用Numba (虽然我已经相当熟悉Cython)。我该如何加速这段代码?注意,该函数返回一组由两个元组组成的整数集。我用的是IPython笔记本。我更喜欢Numba而不是Cython。
@autojit
def generateadj(width,height):
adj = {}
for y in range(height):
for x in range(width):
s = set()
if x>0:
s.add((x-1,y))