两个值同时变化的变量

  • 本文关键字:变化 变量 两个 python
  • 更新时间 :
  • 英文 :


我有这个代码,质心的值被分配给t_cent,然后t_cent进入嵌套的for循环,并产生一个新值。问题是在嵌套的for循环过程之后,我发现质心也与t_cent一起改变了,我不知道为什么。

def Calc_New_cent(centroids, Data):
while True:
t_sent = centroids
for m in range(k):
for n in range(number_of_features):
t_sent.iloc[m, n] = np.mean(Data[Data['clusters'] == m + 1]['{}'.format(n + 1)])
if t_sent.isnull().values.any() == False:
centroids = t_sent
break
return centroids

你没有这么说,但我认为centroids是一个pandas数据框架。当您说t_sent = centroids时,您不是在创建数据帧的副本。相反,您只是创建了对同一数据框架的新引用。当改变t_sent时,也会改变centroids。您可以使用centroids.copy()来创建一个新的副本,但您应该考虑这是否是正确的答案。在适当的地方修改centroids可能更有效,假设您可以尽早了解这是否是您所需要的。

原始代码比这更简单,但有时它返回nan值,所以我遵循这种方法…谢谢你。

def Calc_New_cent(centroids, Data):
for m in range(k):
for n in range(number_of_features):
centroids.iloc[m, n] = np.mean(Data[Data['clusters'] == m + 1]['{}'.format(n + 1)])
return centroids

最新更新