【问题标题】:Normalize numpy array to min max different form column min max将 numpy 数组标准化为 min max 不同形式的列 min max
【发布时间】:2021-05-15 16:12:48
【问题描述】:

我有一个函数可以将 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-ndarray database-normalization


    【解决方案1】:

    到目前为止,这是我的解决方案。将预设的最小最大值添加到 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 2012-08-26
      • 2022-12-16
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 2017-08-24
      相关资源
      最近更新 更多