Depends what you are doing, if the indexing is into something heterogeneous in type, generally yes, if not, generally no. This is another way to do the above, but relies on a baked in tuple again.
from numba import njit, from_dtype, literally, types, literal_unroll
import numpy as np
x = np.array([('Rex', 9, 81.0), ('Fido', 3, 27.0)], dtype=[('name', 'U10'), ('age', 'i4'), ('weight', 'f4')])
numba_type = from_dtype(x.dtype)
print("x.dtype.names", x.dtype.names) # print the field names using dtype
print("numba_type.members", [x[0] for x in numba_type.members]) # print the field names using Record
names = tuple(x.dtype.names)
from numba.extending import overload
#going to overload this function
def resolve(idx, dt):
pass
@overload(resolve)
def ol_resolve(idx, dt):
names = tuple(dt.dtype.fields) # this is just going to get baked in
def impl(idx, dt):
return names[idx]
return impl
@njit
def foo():
print([resolve(i, x) for i in range(3)])
foo()