我有一个矩阵thing
,如下所示:
thing.shape
(8070829, 2)
我希望按一些scalingfactor = np.iinfo(np.int16).max/thing.max()
缩放所有元素以规范化值。现在我正在迭代所有有效的元素,但是真的很慢:
for j, sample in enumerate(thing):
thing[j] = [int(sample[0] * scalingfactor), int(sample[1] * scalingfactor)]
我以为我可以做到以下几点,但结果却不一样:
np.multiply(thing, scalingfactor)
是否有更有效的方法来规范化矩阵?
答案 0 :(得分:0)
使用向量化元素乘法,然后更改dtype(用floor
进行) -
(thing*scalingfactor).astype(int) # for thing as array type
或在缩放版本上使用np.floor
-
np.floor(thing*scalingfactor)
使用问题中发布的代码:np.multiply(thing, scalingfactor)
也可以使用,只需要额外的楼层步骤,如前所述。