如何根据最小值和最大值缩放和打印数组?

How to scale and print an array based on its minimum and maximum value?

我正在尝试根据其最小值和最大值缩放以下 NumPy 数组。

array = [[17405.051 17442.4   17199.6   17245.65 ]
 [17094.949 17291.75  17091.15  17222.75 ]
 [17289.    17294.9   17076.551 17153.   ]
 [17181.85  17235.1   17003.9   17222.   ]]

使用的公式是: m=(x-xmin)/(xmax-xmin)

其中m为单独缩放项,x为单独项,xmax为最高值,xmin为数组最小值。

我的问题是如何打印缩放数组?

P.S。 - 我不能使用 MinMaxScaler,因为我需要通过将给定数字(数组外)插入到上述公式中来缩放给定数字(数组外),其中包含给定数组的 xmin 和 xmax。

我尝试通过遍历数组来缩放单个项目,但我无法将缩放后的数组放在一起。

我是 NumPy 的新手,欢迎提出任何建议。 谢谢。

使用方法ndarray.min()ndarray.max()ndarray.ptp()(获取数组中值的范围):

>>> ar =  np.array([[17405.051, 17442.4,   17199.6,   17245.65 ],
...  [17094.949, 17291.75,  17091.15,  17222.75 ],
...  [17289.,    17294.9,   17076.551, 17153.   ],
...  [17181.85,  17235.1,   17003.9,   17222.   ]])
>>> min_val = ar.min()
>>> range_val = ar.ptp()
>>> (ar - min_val) / range_val
array([[0.91482554, 1.        , 0.44629418, 0.55131129],
       [0.2076374 , 0.65644242, 0.19897377, 0.4990878 ],
       [0.65017104, 0.663626  , 0.16568073, 0.34002281],
       [0.40581528, 0.527252  , 0.        , 0.49737742]])

我觉得你应该多了解一下numpy的基本操作

import numpy as np

array_list = [[17405.051, 17442.4,   17199.6,   17245.65 ],
 [17094.949, 17291.75,  17091.15,  17222.75 ],
 [17289.,    17294.9,   17076.551, 17153.,   ],
 [17181.85,  17235.1,   17003.9,   17222.   ]]

# Convert list into numpy array
array = np.array(array_list)

# Create empty list
scaled_array_list=[]

for x in array:
    m = (x - np.min(array))/(np.max(array)-np.min(array))
    scaled_array_list.append(m)

# Convert list into numpy array
scaled_array = np.array(scaled_array_list)
    
scaled_array

我的版本是按照您所说的遍历数组。

你也可以把所有的东西都放在一个函数里,以后再用:

def scaler(array_to_scale):
    # Create empty list
    scaled_array_list=[]

    for x in array:
        m = (x - np.min(array))/(np.max(array)-np.min(array))
        scaled_array_list.append(m)

    # Convert list into numpy array
    scaled_array = np.array(scaled_array_list)
    
    return scaled_array

# Here it is our input
array_list = [[17405.051, 17442.4,   17199.6,   17245.65 ],
 [17094.949, 17291.75,  17091.15,  17222.75 ],
 [17289.,    17294.9,   17076.551, 17153.,   ],
 [17181.85,  17235.1,   17003.9,   17222.   ]]

# Convert list into numpy array
array = np.array(array_list)

scaler(array)

输出:

Out: 
array([[0.91482554, 1.        , 0.44629418, 0.55131129],
       [0.2076374 , 0.65644242, 0.19897377, 0.4990878 ],
       [0.65017104, 0.663626  , 0.16568073, 0.34002281],
       [0.40581528, 0.527252  , 0.        , 0.49737742]])