私はnumpyとベクトル化を使ってKNNアルゴリズムを実装しようとしています。numpy knested withベクトル化入れ子の行列
import numpy as np
A = np.array([[11,12,13], [21,22,23], [31,32,33]])
B = np.array([[41,42,43], [51,52,53], [61,62,63]])
C = np.array([[71,72,73], [81,82,83], [91,92,93]])
X = np.array([A, B, C])
f = lambda a,b: (a-b)**2
np.sqrt(np.vectorize(f)(A, X).reshape(3,9).sum(axis=1))
# array([ 0., 90., 180.])
私はそれをこのように使用している場合は、私はお互いにすべてのベクトルのすべての距離を取得するにはA.
にすべてのベクトルの距離の3×1行列を取得し、私はその結果の行列が必要になります次のようになります。
array([[ 0., 90., 180.],
[ 90., 0., 90.],
[ 180., 90., 0.]])
希望の結果が得られるように操作を改善するにはどうすればよいですか?
'np.vectorize'を使用する際のポイントは何ですか?あなたはそれを除いて配列の減算とパワーを行うことができるはずです。この関数は、スカラーの形でしか表現できない複雑な関数を対象としています。 – hpaulj
あなたは純粋なpythonでKNNアルゴリズムを書くことができます。それからnumpyのコードに書き換える方法を尋ねる。どちらが良いと思いますか? –