2017-11-02 8 views
0

2つの行列があり、配列の各行のユークリッド距離を安全にしたいので、後でデータを扱うことができます(knn Kneighbours、私は一時的なKという名前を使用します。後でその配列のマトリックスを作成する(2列は行をxnは、各行がアレイの位置nから距離を含有するであろう、この場合には、kはそのNである)ことができるPythonの配列に結果を追加しよう

import numpy as np 

v1=np.matrix('1,2;3,4') 
v2=np.matrix('5,6;7,8') 

k=0 

for i in v1: 

    distancias.append(k)=np.linalg.norm(v2-v1[k,:]) 
    print(distancias[k]) 
    k=k+1 

それは私にエラーを与えます:

File "<ipython-input-44-4d3546d9ade5>", line 10 
    distancias.append(k)=np.linalg.norm(v2-v1[k,:]) 
    ^
SyntaxError: can't assign to function call 

と私は本当に構文エラーがあるかわからない。

私も試してみました:

import numpy as np 

v1=np.matrix('1,2;3,4') 
v2=np.matrix('5,6;7,8') 

k=0 

for i in v1: 

    valor=np.linalg.norm(v2-v1[k,:]) 
    distancias.append(valor) 
    print(distancias[k]) 
    k=k+1 

を、この場合、エラーは次のとおりです。

AttributeError       Traceback (most recent call last) 
<ipython-input-51-8a48ca0267d5> in <module>() 
     9 
    10  valor=np.linalg.norm(v2-v1[k,:]) 
---> 11  distancias.append(valor) 
    12  print(distancias[k]) 
    13  k=k+1 

AttributeError: 'numpy.float64' object has no attribute 'append' 
+0

'distancias.append(k)は'関数呼び出しです。関数呼び出しにデータを割り当てることはできません... –

+0

私は 'valor = np.linalg.norm(v2-v1 [k ,:])を試しました distancias.append(valor)' まだまだ... –

+0

あなたは、あなたが望むものの例を出力しますか? –

答えて

2

あなたが不可能な関数呼び出しにデータを割り当てるしようとしています。 linalg.norm()で計算されたデータを配列distanciasに追加する場合は、次のようにすることができます。

import numpy as np 

v1=np.matrix('1,2;3,4') 
v2=np.matrix('5,6;7,8') 

k=0 

distancias = [] 

for i in v1: 

    distancias.append(np.linalg.norm(v2-v1[k,:])) 
    print(distancias[k]) 
    k=k+1 

print(distancias) 

出力

10.1980390272 
6.32455532034 
[10.198039027185569, 6.324555320336759] 
関連する問題