首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂数学公式Python

复杂数学公式Python
EN

Stack Overflow用户
提问于 2020-06-23 09:45:12
回答 1查看 1.1K关注 0票数 3

我一直在尝试用python编程一个数学公式。代码正在运行,但我坚信这些代码并不能反映实际的数学公式,但我迷失了方向,不知道自己哪里会出错。下面是我的代码,我已经附上了实际的数学公式。请检查python代码是否与数学公式-if不匹配,请帮助了解我出错的地方。我真的很迷茫。

代码语言:javascript
复制
## Inter cluster distance
inter = 0 
for i in range(centr.shape[1]-1):
  for j in range(i+1,centr.shape[1]):
    for l in range(centr.shape[0]):
      inter = inter + (centr[l][i]-centr[l][j])**2    
print('Intercluster distance: '+ str(inter))
## Intra cluster cluster
intra = 0
for i in range(data.shape[0]):
  for j in range(centr.shape[0]):[enter image description here][2]
    intra = intra + (data[i][j] - centr[j][Cc[i]-1])**2
print('Intracluster distance: '+ str(intra))

数学方程簇内距离 Mth方程簇间距离

我在python中的代码

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-23 10:25:46

观察range构造函数的工作方式:

代码语言:javascript
复制
>>> list(range(3))
[0, 1, 2]

>>> list(range(1, 3))
[1, 2]

因此,默认的开始值是0,并且永远不包括停止值。因此,您需要稍微不同的开始值和停止值。

此外,与您给出的公式相比,代码中的矩阵元素z的索引可能都是1单位,因为Python的工作原理类似于range,从0开始,而在公式中它们显然从1开始。

例如,对于簇间距离,我们应该有以下代码:

代码语言:javascript
复制
## Inter cluster distance
inter = 0 
for i in range(1, centr.shape[1]):
    for j in range(i+1, centr.shape[1] + 1):
        for l in range(1, 3 + 1):
            inter = inter + (centr[l - 1][i - 1] - centr[l - 1][j - 1])**2    
print('Intercluster distance: '+ str(inter))

或者,可以使索引i, j, l全部缩小一个单位,并相应地对z值进行索引,这将产生相同的结果:

代码语言:javascript
复制
## Inter cluster distance
inter = 0 
for i in range(centr.shape[1] - 1):
    for j in range(i, centr.shape[1]):
        for l in range(3):
            inter = inter + (centr[l][i] - centr[l][j])**2    
print('Intercluster distance: '+ str(inter))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62531831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档