我正在研究一些我想加快速度的科学 python 代码。一个具体问题是读取大量使用格式化字符串存储在文本文件中的数据。我发现使用 split() 和 np.array() 的方法效果很好,但与我在 FORTRAN 中使用的方法相比确实很慢。
我想知道天气 scipy.weave 可以在这里使用,不幸的是我不是 C 专家。这是一个例子:
line =" 0.7711408E-01 0.7616138E-01 0.7521919E-01"
arr = np.array(line.split(),dtype=np.float)
print arr
这很有效,但对于大型数据集来说速度很慢。像这样的东西呢,工作吗?
line =" 0.7711408E-01 0.7616138E-01 0.7521919E-01"
arr = np.zeros(3)
weave.inline("""sscanf(std::string(line).c_str(),"%f %f %f",arr);""",['line','arr'])
print arr