Numpy数组缩放未返回正确的值

2024-04-19 11:25:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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

数组的示例输出为

[2。0367.877…,-0.358 51.547-32.633]

[2。0339.824…,-0.33 52.562-27.581]

[3。0371.438…,-0.406 55.108-35.573]

我尝试通过以下代码缩放数组(data\ in):

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

然而,数据的输出是:

[0.50。0.95437199 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.9091 0.34346373 1.25110652 0。0.8537859 1. 1.]

显然,它没有正常化--有多个区域的最大值大于1。是否有更好的方法来缩放数据,或者我是否错误地使用了max()函数(例如,max()值是否在列之间共享?)你知道吗


Tags: the数据代码inltnumpy区域示例
1条回答
网友
1楼 · 发布于 2024-04-19 11:25:43

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       ]])

相关问题 更多 >