【发布时间】:2023-03-27 08:14:01
【问题描述】:
我应该如何优化此功能以提高速度?我知道我可能应该在循环之前声明 arr,这样 Python 就不需要在每个循环中检查 if/else 条件。
但我还能做什么?我知道可能有一种方法可以使用地图或矢量化操作。
def get_features(images):
arr = None
for i in range(len(images)):
img = X_train[i]
a, b, c, d = get_rgb_mean(img), get_rgb_std(img), get_hist(img), get_lbp(img)
j = np.concatenate((a, b, c, d))
if arr is None:
arr = j
else:
arr = np.concatenate((arr, j), axis=1)
arr = StandardScaler().fit_transform(arr)
return arr.T
【问题讨论】:
-
我投票结束这个问题,因为这是一个更适合代码审查的问题codereview.stackexchange.com
-
你是对的!不知道有这种东西存在
-
即使在那里,你也应该清楚地描述输入是什么以及函数应该做什么。
-
会的!我应该删除这个问题吗?
-
在整体计时中,
if测试是次要的时间消耗。循环中的np.concatenate是个坏主意。我不得不反复告诉人们,使用列表追加代替。
标签: python numpy vectorization