【发布时间】:2015-11-10 10:35:27
【问题描述】:
我正在使用 pandas 0.16.2、numpy 1.9.2 和 numba 0.20。
有没有办法让 numba 在 nopython 模式下支持字符串数组? 或者,我可以以某种方式将字符串转换为 numba 可以识别的数字吗?
我必须在字符串数组(pandas 数据帧中的一列)上运行某些循环;如果我可以使用 numba,代码会快很多。
我想出了这个最小的例子来说明我的意思:
import numpy as np
import numba
x=np.array(['some','text','this','is'])
@numba.jit(nopython=True)
def numba_str(txt):
x=0
for i in xrange(txt.size):
if txt[i]=='text':
x += 1
return x
print numba_str(x)
我得到的错误是:
Failed at nopython (nopython frontend)
Undeclared ==([char x 4], str)
谢谢!
【问题讨论】:
-
纯粹从错误来看,您似乎以某种方式将整个数组/列表与字符串进行了比较。你确定
txt[i]不是整个列表吗? -
@Andrey:是的,我确定。 x[0]='some'、x[1]='text' 等。您可以很容易地看到这个禁用 numba 并在循环中添加 'print txt[i]'。