【发布时间】:2021-06-21 18:32:18
【问题描述】:
我正在使用类和 numba 编写一个非常简单的 Python 代码,一切都很好,直到我有了将字符串数组传递给 __init__() 的“绝妙”想法。第一行相关代码如下所示:
import numpy as np
from numba import float64, types
from numba.experimental import jitclass
spec = [('p_', float64), ('T_', float64), ('pc_', float64), ('Tc_', float64), \
('rhoc', float64), ('omega_', float64), ('MW_', float64), \
('zf', float64), ('rho', float64), ('visc', float64), \
('Comps', types.unicode_type[:]), ('Y', float64[:])]
@jitclass(spec)
class Viscosity:
def __init__(self, p_, T_, Comps, Y):
....
Comps 给我带来了麻烦。通常,Comps 类似于 np.array(['CH4','C2H6'])。我可能把它简单地做成了一个列表['CH4','C2H6'],而不是一个数组,但这并不重要,因为它无论如何都行不通。代码中的任何地方都不会对这些字符串进行数字或字符串操作;我只想将它们传递给__init__()。
我找到了一个简单的例子,其中一个字符串被声明为types.unicode_type,并试图将它调整到我稍微复杂一点的情况,但没有成功。
应该有办法避免这种情况,因为不对字符串进行任何处理。我不妨从我的代码中彻底清除 numba,因为在这个小项目中执行时间并不重要,而且可能永远不会成为问题。但我不喜欢轻易放弃这类事情的想法。
感谢您的帮助。
【问题讨论】: