将 numpy 数组规范化为 min max 不同形式的列 min max
Normalize numpy array to min max different form column min max
我有一个函数可以将 numpy 数组规范化为列本身中的最小最大值:
def normalize_function(data):
min = np.amin(data,axis=0)
max = np.amax(data,axis=0)
return (data - min)/(max-min)
Value = pdData[['wave1','value2','value3','wave3']].to_numpy()
Value = normalize_function(Value)
但是,我需要为每一列分别预设我自己的最小最大值。
示例:对于 wave1 min=100 max=300,对于 value2 min=2 max=10,对于 value2 min=10 max=100。这些最小最大值与列内的最小最大值不同。感谢提前帮助!
这是我目前的解决方案。将预设的最小最大值添加到 numpy 数组,归一化,然后删除那些添加的最小最大值。
# Normalization preset
normSetFile = "NormSet.xls"
normSetCsv = pd.read_excel(normSetFile)
normSetDF = pd.DataFrame(normSetCsv).astype(float)
npNormSet = normSetDF.to_numpy(dtype=np.float64)
def normalize_function(data):
min = np.amin(data,axis=0)
max = np.amax(data,axis=0)
return (data - min)/(max-min)
def norm_check(data):
for col in range(0, data.shape[1]):
for ind in range(0, data.shape[0]):
if (data[ind, col] < npNormSet[0, col]):
print('Error data ' + str(data[ind, col]) + ' at column ' + str(col) + ' index ' + str(ind) + ' is lower than min ' + str(npNormSet[0, col]))
if (data[ind, col] > npNormSet[1, col]):
print('Error data ' + str(data[ind, col]) + ' at column ' + str(col) + ' index ' + str(ind) + ' is bigger than max ' + str(npNormSet[1, col]))
def Normalize(data):
norm_check(data)
data = np.append(data, npNormSet, axis=0)
data = normalize_function(data)
data = np.delete(data, slice(len(data)-2, len(data)), axis=0)
return data
我有一个函数可以将 numpy 数组规范化为列本身中的最小最大值:
def normalize_function(data):
min = np.amin(data,axis=0)
max = np.amax(data,axis=0)
return (data - min)/(max-min)
Value = pdData[['wave1','value2','value3','wave3']].to_numpy()
Value = normalize_function(Value)
但是,我需要为每一列分别预设我自己的最小最大值。 示例:对于 wave1 min=100 max=300,对于 value2 min=2 max=10,对于 value2 min=10 max=100。这些最小最大值与列内的最小最大值不同。感谢提前帮助!
这是我目前的解决方案。将预设的最小最大值添加到 numpy 数组,归一化,然后删除那些添加的最小最大值。
# Normalization preset
normSetFile = "NormSet.xls"
normSetCsv = pd.read_excel(normSetFile)
normSetDF = pd.DataFrame(normSetCsv).astype(float)
npNormSet = normSetDF.to_numpy(dtype=np.float64)
def normalize_function(data):
min = np.amin(data,axis=0)
max = np.amax(data,axis=0)
return (data - min)/(max-min)
def norm_check(data):
for col in range(0, data.shape[1]):
for ind in range(0, data.shape[0]):
if (data[ind, col] < npNormSet[0, col]):
print('Error data ' + str(data[ind, col]) + ' at column ' + str(col) + ' index ' + str(ind) + ' is lower than min ' + str(npNormSet[0, col]))
if (data[ind, col] > npNormSet[1, col]):
print('Error data ' + str(data[ind, col]) + ' at column ' + str(col) + ' index ' + str(ind) + ' is bigger than max ' + str(npNormSet[1, col]))
def Normalize(data):
norm_check(data)
data = np.append(data, npNormSet, axis=0)
data = normalize_function(data)
data = np.delete(data, slice(len(data)-2, len(data)), axis=0)
return data