平均法を使用して、固定[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
上記の例では、[Mx1] ([400x1])ベクトルをNx1 ([140x1])次元でダウンサンプリングする必要があります。したがって、動的にウィンドウ サイズ[2.857x1]を使用して[Mx1] vector をダウンサンプリングできます。しかし、この場合、 [140x1] ではなく[200x1]のベクトルを出力として取得しています。これは、-> [2x1]でダウンサンプリングされた小麦粉 (2.85)に発生するフローティング ウィンドウのためです。私のウィンドウサイズは新しい[Nx1]次元にぴったりなので、パディングはゼロです。では、 [Mx1]ベクトルをダウンサンプリングするために、そのようなタイプのウィンドウ サイズを使用する方法はありますか?