Numpy数组缩放没有返回正确的值



我有一个numpy数组,我想通过缩放所有列来改变它(例如,一列中的所有值都除以该列中的最大值,以便所有值都是<1)。

数组的示例输出是

[2。0. 367.877……, -0.358 51.547 -32.633]

[2。0. 339.824……, -0.33 52.562 -27.581]

[3。0. 371.438……, -0.406 55.108 -35.573]

我已经尝试缩放数组(data_in)通过以下代码:

#normalize the data_in array 
data_in_normalized = data_in / data_in.max(axis=0)

但是,data_in_normalized的输出是:

[0.05]。0.89363654 0.80751792]

[0.46931238 0.50660904 0.5003812 0.91250444 0.625]

[0.96229214 0.89483109 0.86989432 0.86491407 0.71287646]

[-23.90909091 0.34346373 1.25110652]0.8537859 - 1。1)

显然,它没有标准化——有多个区域的最大值>1。是否有更好的方法来扩展数据,或者我使用max()函数不正确(例如max()值在列之间共享?)

IIUC,这并不是说最大值在列之间共享,而是您可能想要除以最大绝对值,因为您有两个符号的元素。毕竟,1> -100,因此,如果您除以具有[1,-100]的列的最大值值,没有任何变化。

例如:

>>> data_in = np.array([[-3,-2],[2,1]])
>>> data_in
array([[-3, -2],
       [ 2,  1]])
>>> data_in.max(axis=0)
array([2, 1])
>>> data_in / data_in.max(axis=0)
array([[-1.5, -2. ],
       [ 1. ,  1. ]])

,

>>> data_in / np.abs(data_in).max(axis=0)
array([[-1.        , -1.        ],
       [ 0.66666667,  0.5       ]])