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