避免在 numba 优化函数中使用 str()

avoid usage of str() in numba optimized functions

在下面的代码片段中,我想避免在函数 foo 中使用 str()

import numpy as np

def foo(a):
    for runner in range(a.shape[0]):
        row = a[runner, :]
        toPrint = str(runner) + ' '+ str(row)
        print(toPrint)

myArray = np.array(np.arange(9).reshape(3,-1)).astype('float')

foo(myArray)

输出:

0 [0. 1. 2.]
1 [3. 4. 5.]
2 [6. 7. 8.]

背景:我使用 numba (https://numba.pydata.org/ ),其中无法在 numba 优化函数中使用 str()

如果不允许使用 str()foo 的代码应该是什么样子?也就是说,不应进行任何导入(因为 numba 大多数时候不适用于它们)。

考虑字符串格式:

toPrint = '{} {}'.format(runner, row)
print(toPrint)

或者简单地(因为默认情况下有一个 space 分隔参数):

print(runner, row)

#  or [if you want to keep the toPrint variable]:

toPrint = (runner, row)
print(*toPrint)

如果您不想在函数 foo 中使用 str() 函数,为什么不先将结果附加到临时列表中再打印出来?

import numpy as np
list1 = []

def foo(a):
    for runner in range(a.shape[0]):
        row = a[runner, :]
        toPrint = str(runner) + ' '+ str(row)
        list1.append(toPrint)

myArray = np.array(np.arange(9).reshape(3,-1)).astype('float')

foo(myArray)
print(list1)