避免在 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)
在下面的代码片段中,我想避免在函数 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)