我正在尝试通过使用平均方法将固定的[Mx1]向量下采样到任何给定的[Nx1]维度。我有一个动态窗口大小,每次都会根据所需的输出数组而变化。所以,在某些情况下,我很幸运,得到了完全符合窗口大小的 int 窗口大小,有时我得到浮点数作为窗口大小。但是,我如何使用浮动大小的窗口从固定的[Mx1]向量生成[Nx1]大小的向量?
以下是我尝试过的代码:
chunk = 0.35
def fixed_meanVector(vec, chunk):
size = (vec.size*chunk) #size of output according to the chunk
R = (vec.size/size) #windows size to transform array into chunk size
pad_size = math.ceil(float(vec.size)/R)*R - vec.size
vec_padded = np.append(vec, np.zeros(pad_size)*np.NaN)
print "Org Vector: ",vec.size, "output Size: ",size, "Windows Size: ",R, "Padding size", pad_size
newVec = scipy.nanmean(vec_padded.reshape(-1,R), axis=1)
print "New Vector shape: ",newVec.shape
return newVec
print "Word Mean of N values Similarity: ",cosine(fixed_meanVector(vector1, chunk)
,fixed_meanVector(vector2, chunk))
输出:
New Vector shape: (200,)
Org Vector: 400 output Size: 140.0 Windows Size: 2.85714285714 Padding size 0.0
New Vector shape: (200,)
0.46111661289
在上面的示例中,我需要在Nx1 ([140x1])维度下对[Mx1] ([400x1])向量进行下采样。因此,动态窗口大小[2.857x1]可用于对[Mx1]向量进行下采样。但是,在这种情况下,我得到一个[200x1]的向量作为我的输出,而不是 [140x1] 由于浮动窗口提升到面粉(2.85),它是用 -> [2x1]下采样的。填充为零,因为我的窗口大小非常适合新的[Nx1]尺寸。那么,有没有办法使用这种类型的窗口大小来对[Mx1]向量进行下采样?