0
votes

Comment normaliser un tableau entre la valeur min et max

J'ai un tableau:

list = [[2310.01, 2640.14, 2710.63, 2926, 2700.12],
        [2014.45, 2160, 2430.65, 2700.65, 2714.63]]

J'ai besoin de normaliser chaque ligne dans une liste 2D entre (min=-.1, max=.1) . Toutes les méthodes peuvent normaliser les données entre [0,1] ou [-1,1] . Mais, comme j'ai un tableau 2D, je dois normaliser chaque ligne entre une valeur min / max, par exemple: (-.1, .1) .

J'utilise Python et MATLAB, j'espère pouvoir obtenir des réponses avec python ou matlab.


0 commentaires

4 Réponses :


1
votes

Dans MATLAB, vous pouvez le faire comme suit:

Normaliser à la plage [-1, 1]:

lo_out = -0.1
hi_out = 0.1
range_out = hi_out - lo_out

%Normalize to range [0, 1]:
%norm_list = (list - min(list, [], 2)) ./ (max(list, [], 2) - min(list, [], 2))

%Normalize to range [lo_out, hi_out]:
lo_in = min(list, [], 2); %Minimum of each row
hi_in = max(list, [], 2); %Maximum of each row
range_in = hi_in - lo_in; %Range of each row

norm_list = ((list - lo_in) ./ range_in) * range_out + lo_out

Pas la meilleure solution, mais la plus rapide à laquelle j'ai pensé ...


Mise à jour - normalisation à la plage de destination générale:

norm_list = ((list - min(list, [], 2)) ./ (max(list, [], 2) - min(list, [], 2)))*2 - 1


0 commentaires

0
votes

Le moyen le plus simple sera de faire une normalisation min-max

np.array(list)
array = list[:] - np.min(list) / (np.max(list) - np.min(list))
array = 2*array - 1

Maintenant, le tableau est normalisé entre -1 et 1


1 commentaires

J'ai besoin de normaliser chaque ligne entre une valeur min / max ex: (-.1, .1)



0
votes

Dans R2018a et versions ultérieures, vous pouvez utiliser la fonction de normalisation directement dans MATLAB pour ce faire.

A = magic(3)

A =

 8     1     6
 3     5     7
 4     9     2

normalize(A,2,'range',[-1 1])

ans =

1.0000   -1.0000    0.4286
-1.0000         0    1.0000
-0.4286    1.0000   -1.0000


0 commentaires

0
votes

Il y a une grande fonction dans Matlab appelée "mapminmax" développée pour ce travail.

x = (mapminmax('reverse',x_normalized',PS))' % Obtaining the true value of x.

La fonction examine les lignes, c'est pourquoi nous devons faire l'opération x 'car nous voulons normaliser en fonction des colonnes. Le paramètre PS représentera les paramètres requis lorsque nous voulons le convertir en valeur réelle avant la normalisation.

x=data;
[x_normalized, PS]=mapinmax(x',0,1); % It makes normalization in the range of 0-1.
x_normalized=x_normalized';


0 commentaires