gpt4 book ai didi

python - numba - 打字错误 : cannot determine Numba type of

转载 作者:太空狗 更新时间:2023-10-29 21:41:26 26 4
gpt4 key购买 nike

我有一个简单的函数来对扑克手牌进行排序(手牌是字符串)。

我用 rA,rB = rank(a),rank(b) 调用它,这是我的实现。没有 @jit(nopython=True) 也能很好地工作,但是有了它,它就失败了:

   File "...poker.py", line 190, in <module>
rA,rB = rank(a),rank(b)

File "C:\Continuum\anaconda3\lib\site-packages\numba\dispatcher.py", line 344, in _compile_for_args
reraise(type(e), e, None)

File "C:\Continuum\anaconda3\lib\site-packages\numba\six.py", line 658, in reraise
raise value.with_traceback(tb)

TypingError: cannot determine Numba type of <class 'builtin_function_or_method'>

from numba import jit
from numba.types import string

@jit(nopython=True)
def rank(hand):
# assert(len(hand) == 5)
rank = "N/A"

p = pd.Series([h[0] for h in hand]).value_counts()
v = sorted(set(pd.Series([h[0] for h in hand]).values), reverse=True)
s = sorted(hand, key=lambda k:k[0])
z = zip(s,s[1:])

if all(x[0]==y[0]-1 for x,y in z):
rank = "Straight "

if len(set([h[1] for h in hand])) == 1:
rank += "Flush "

if "Straight Flush" in rank and sum([h[0] for h in hand]) == sum([10,11,12,13,14]):
rank = "Royal Flush"

elif p[p.idxmax()] == 4:
rank = "4 Of A Kind : %d" % p.idxmax()

elif p[p.idxmax()] == 3 and p[p.idxmin()] == 1:
rank = "3 Of A Kind : %d" % p.idxmax()

elif p[p.idxmax()] == 3 and p[p.idxmin()] == 2:
rank = "Full House : %d,%d" % (p.idxmax(), p.idxmin())

elif p[p.idxmax()] == 2:
max2 = p.nlargest(2)

if list(max2) == [2,2]:
max2 = sorted(list(max2.keys()), reverse=True)
rank = "2 Pairs : %d,%d" % (max2[0],max2[1])
else:
rank = "Pair : %d" % p.idxmax()

else:
rank = "High Card : %d" % v[0]


return rank

最佳答案

您代码中的 Pandas 和其他几个函数调用将不适用于 nopython=True。可与 nopython 中的 numba jit 一起使用的可用库非常有限(几乎仅适用于 numpy 数组和某些 python 内置库)。您可以找到更多信息here

关于python - numba - 打字错误 : cannot determine Numba type of <class 'builtin_function_or_method' >,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50744686/

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