试图在Python中将结果添加到数组中

时间:2017-11-02 18:15:49

标签: python numpy

我有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'

1 个答案:

答案 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]