在numpy中使用标量乘法归一化2D矩阵

时间:2018-03-24 20:14:43

标签: python numpy matrix-multiplication

我有一个矩阵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)

是否有更有效的方法来规范化矩阵?

1 个答案:

答案 0 :(得分:0)

使用向量化元素乘法,然后更改dtype(用floor进行) -

(thing*scalingfactor).astype(int) # for thing as array type

或在缩放版本上使用np.floor -

np.floor(thing*scalingfactor)

使用问题中发布的代码:np.multiply(thing, scalingfactor)也可以使用,只需要额外的楼层步骤,如前所述。