【问题标题】:Using an array as input into a function?使用数组作为函数的输入?
【发布时间】:2021-03-13 16:28:47
【问题描述】:
X = 
[[14.23  3.06  5.64  2.43]
 [13.2   2.76  4.38  2.14]
 [13.16  3.24  5.68  2.67]
 [14.37  3.49  7.8   2.5 ]
 [13.24  2.69  4.32  2.87]
 [14.2   3.39  6.75  2.45]
 [14.39  2.52  5.25  2.45]
 [14.06  2.51  5.05  2.61]
 [14.83  2.98  5.2   2.17]
 [13.86  3.15  7.22  2.27]
 [14.1   3.32  5.75  2.3 ]
 [14.12  2.43  5.    2.32]
 [13.75  2.76  5.6   2.41]
 [14.75  3.69  5.4   2.39]
 [14.38  3.64  7.5   2.38]
 [13.63  2.91  7.3   2.7 ]
 [14.3   3.14  6.2   2.72]
 [13.83  3.4   6.6   2.62]
 [14.19  3.93  8.7   2.48]
 [13.64  3.03  5.1   2.56]]

这是我的数据集。现在我想计算 2 个向量(行)的欧几里得距离。

Row1 = X[1]
Row2 = X[2]

我的功能:

def Edistance (v1, v2):
      distance = 0.0 
      for i in range(len(v1)-1):
        distance += (v1(i)) - (v2(i))**2
      return sqrt(distance)        


Edistance(Row1,Row2)

然后我得到 Typerror: NumPy array is not callable。我不能在函数输入中使用数组吗?

【问题讨论】:

  • 你不能像这样索引数组,你需要v1[i]。 v2 也一样。

标签: python arrays function


【解决方案1】:

您可以将任何对象作为函数参数传递,因此您可以传递数组,但正如前面提到的@xdurch0,您的语法是错误的。

def Edistance (v1: dict, v2: dict): # You 
      distance = 0.0 
      for i in range(len(v1)-1):
        distance += (v1(i)) - (v2(i))**2
      return sqrt(distance)  

您在这里尝试做的是调用v1 和v2,就好像它们是一个函数一样,因为() 用于执行命令。但据我了解,您想要做的是使用[] 引用数组内的元素。

所以,基本上,你想做v1[i]和v2[i](而不是分别v1(i)和v2(i))。

【讨论】:

  • 哇。我怎么会错过这么明显的东西。谢谢。
猜你喜欢
  • 2010-11-03
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
  • 2020-07-03
相关资源
最近更新 更多