python實現區間轉換、numpy圖片數據轉換
需求:
客戶的需求是永無止境的,這不?前幾天,用戶提出了一個需求,需要將一組數據從一個區間縮放到另一區間?
思路:
先將數據歸一化,再乘以對應區間的差加上對於區間下限。
數據歸一化的公式:
# 區間變換 def unification_interval(data,interval_min,interval_max): # data :需要變換的數據或矩陣 # interval_min :變換區間下限。 # interval_max :變換區間上限。 import numpy as np data = np.array(data) n,m = data.shape minval = np.min(np.min(data)) maxval = np.max(np.max(data)) for i in range(n): for j in range(m): data[i,j] = (data[i,j]-minval)/(maxval-minval) return data*(interval_max-interval_min)+interval_min
# 整形的轉換
def Inter(data): import numpy as np data = np.array(data) n,m = data.shape for i in range(n): for j in range(m): data[i,j] = int(data[i,j]) return data
# coding:utf-8 import pandas as pd import numpy as np import matplotlib.pyplot as plt from scipy.misc import imresize # 區間變換 def unification_interval(data,interval_min,interval_max): # data :需要變換的數據或矩陣 # interval_min :變換區間下限。 # interval_max :變換區間上限。 import numpy as np data = np.array(data) n,m = data.shape minval = np.min(np.min(data)) maxval = np.max(np.max(data)) for i in range(n): for j in range(m): data[i,j] = (data[i,j]-minval)/(maxval-minval) return data*(interval_max-interval_min)+interval_min def Inter(data): import numpy as np data = np.array(data) n,m = data.shape for i in range(n): for j in range(m): data[i,j] = int(data[i,j]) return data # 圖片讀入 img_data = pd.read_csv('./data/milliq.csv',header=0,index_col=0,sep=',') # print(np.max(np.max(img_data))) # print(np.min(np.min(img_data))) data = Inter(img_data) imgData = unification_interval(data,0,255) # print(np.max(np.max(imgData)),np.min(np.min(imgData))) data = imresize(data,[200,200]) plt.imshow(data,cmap='gray') plt.show()