Numpy 中 tile(Array, Dimension) 功能是叠加Array,根据Dimension构建新的维度的数组。假设Array为(1,N)数组,Dimension为(m,1)数组, tile(Array, Dimension) 即构建(m,n)数组,每一行都为Array(1,N)。
利用 tile() ,可以快速叠加一阶数组,完成数组数值归一化计算中针对最小值(下文中minVals)和区间(下文中ranges)的减法。
以下代码为Machine Learning in Action 2.2.3 中的转载示例:
def autoNorm(dataSet):
minVals = dataSet.min(0)
maxVals = dataSet.max(0)
ranges = maxVals - minVals
normDataSet = zeros(shape(dataSet))
m = dataSet.shape[0]
normDataSet = dataSet - tile(minVals, (m,1))
normDataSet = normDataSet/tile(ranges, (m,1)) #element wise divide
return normDataSet, ranges, minVals
(1) normDataSet = dataSet - tile(minVals, (m,1))
tile(minVals, (m,1)) 的功能是将数组 minVals 按(m,1)数组的维度叠加(即叠加m行,1列)。
(2) normDataSet = normDataSet/tile(ranges, (m,1)) #element wise divide
tile(ranges, (m,1)) 的功能是将数组 ranges (= maxVals - minVals) 按(m,1)数组的维度叠加(即叠加m行,1列)。
数组的数值归一化,即将取值范围相应转化至(0,1)或(-1,+1)区间。 下列公式将任意取值范围的特征值转化为0到1的区间中:
newValue = (oldValue - min) / (max - min)