【发布时间】:2014-04-22 22:54:11
【问题描述】:
有一种简单的方法可以标准化一个 ndarray(每个值都在 0.0, 1.0 之间)?
例如,我有一个像这样的矩阵:
a = [[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.]]
到目前为止,我正在获得最大值
max(max(p[1:]) for p in a)
a / p
除了我认为 numpy 可能在一行中有一个方法,如果我的数据是这样的,这不起作用:
b = [[-1., -2., -3.],
[-4., -5., -6.],
[-7., -8., 0.]]
这给出了由零除法引起的错误。
我想要做的是最大值变为 1。所以,我想做一个转换,使 9 变为 1(在正的情况下,只需将值除以最大值)和 0(当它是最大值)变为 1(使用翻译方法,例如),我知道这样做很热,但我猜 numpy 可能在其包中有解决方案。
如何使用 numpy 很好地执行此操作?
提前谢谢你。
【问题讨论】:
-
如果最大值为 0,你将如何规范化数组?该错误不是因为您的操作方式,而是您定义问题的方式中的域错误。
-
我想要做的是最大值变为 1,最小值变为 0。所以,我想做一个翻译,使 0 变为 1,我知道这样做很热,但是我猜 numpy 可能在它的包里有一个解决方案。
-
好的,所以你想按最大幅度(即绝对值)进行归一化。
-
最小零没有意义,抱歉。
-
@sh1ftst0rm -- 不完全是。在一般情况下,按最大幅度标准化会将值置于 -1、1 的范围内。峰峰值需要进行偏移和归一化。
标签: python numpy normalization multidimensional-array