这是我的代码,我想做的是逐列地将我编写的函数应用于numpy数组。要了解程序的进度,我想做一些与if i % 100 == 0: print i
在for循环中可以做的类似的事情
from sklearn.mixture import GMM
gmm = GMM(n_components=2)
def getFunc(x):
print 1
return gmm.fit_predict(np.expand_dims(x,axis=1))
newX = np.apply_along_axis(getFunc, 0, inputX)
最佳答案
您可以尝试为您的函数编写装饰器。
from functools import wraps
from sklearn.mixture import GMM
gmm = GMM(n_components=2)
def log_every(n):
def decorator(fn)
counter = 0
@wraps(fn)
def wrapper(*args, **kwargs):
counter += 1
if counter % n == 0:
print(n)
return fn(*args, **kwargs)
return wrapper
return decorator
@log_every(100)
def getFunc(x):
return gmm.fit_predict(np.expand_dims(x,axis=1))
newX = np.apply_along_axis(getFunc, 0, inputX)
但是,正如@MarcusMüller指出的那样,性能可能会受到影响。
关于python - 如何计算一个函数被调用的次数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38933393/