我有2个矩阵,我想保护数组中每行的欧氏距离,以便之后我可以使用数据(knn Kneighbours,我使用名为K的时间,因此我可以稍后创建该数组的矩阵( 2列xn行,每行包含距离数组位置n的距离,在这种情况下,k是n)。
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 :(得分: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]