我正在使用np.vectorize-ed 函数,并希望使用tqdm. 但是,我一直无法弄清楚如何做到这一点。
我发现的所有建议都与将计算转换为 for 循环或 pd.DataFrame 相关。
据我所知,tqdm不会结束numpy.vectorize。
要显示 numpy 数组的进度条,numpy.ndenumerate可以使用。
给定输入和函数:
import numpy as np
from tqdm import tqdm
a = np.array([1, 2, 3, 4])
b = 2
def myfunc(a, b):
"Return a-b if a>b, otherwise return a+b"
if a > b:
return a - b
else:
return a + b
Run Code Online (Sandbox Code Playgroud)
替换下面的矢量化部分
# using numpy.vectorize
vfunc = np.vectorize(myfunc)
vfunc(a, b)
Run Code Online (Sandbox Code Playgroud)
有了这个
# using numpy.ndenumerate instead
[myfunc(x,b) for index, x in tqdm(np.ndenumerate(a))]
Run Code Online (Sandbox Code Playgroud)
才能看到tqdm进展。