在python中更新特定行

在python中更新特定行,python,numpy,Python,Numpy,我有一个函数,我在每次迭代中更新numpy数组,但在第一次迭代后原始数组不更新 W = np.empty((3,3)) W.fill(1.0/3) H = np.empty((2,3)) H.fill(1.0/3) # file.txt contains 100 rows of x,y,z (with different values) def UpdateHz(a,b,c) : return np.subtract(H[b,:],H[c,:]) def UpdateHy(a,

我有一个函数,我在每次迭代中更新numpy数组,但在第一次迭代后原始数组不更新

W = np.empty((3,3))
W.fill(1.0/3)

H = np.empty((2,3))
H.fill(1.0/3)

# file.txt contains 100 rows of x,y,z (with different values)

def UpdateHz(a,b,c) :
     return np.subtract(H[b,:],H[c,:])

def UpdateHy(a,b,c) :

     return np.subtract(W[b,:],H[c,:])
def UpdateHz(a,b,c) :
     return np.subtract(W[a,:],H[b,:])

with open('file.txt') as f:
  for line in f:
   x,y,z = [int(s) for s in line.split()] 
   W[x,:] = UpdateW(x,y,z)  
   H[y,:] = UpdateHy(x,y,z)
   H[z,:] = UpdateHz(x,y,z)
这里update函数将返回W和H的更新行。我只需要更新p中的第xth行和H中的第Yth行以及第zth行。这将一直运行到文件结束

我也试过这样:

W[x] = UpdateW(x,y,z)  
H[y] = UpdateHy(x,y,z)
H[z] = UpdateHz(x,y,z)

但是在第一次迭代之后,W,H保存了旧的值(已经初始化),我在这里做错了什么

这确实需要一个完整的、最少的例子。请看关于这个问题的讨论,其中人们要求提供一个最小的示例,但没有看到一些示例数据和更新函数的代码,很难给出一个好的答案!也许你返回的是视图而不是数组,因此在W和H中没有任何内容被替换。但是没有看到源代码,这只是一个猜测…@jkalden我已经添加了示例代码。如果我在返回后打印H[y]W[x]H[z],它会显示正确的值,但当我看到W和H矩阵时,它不会更新hi!返回值的类型应该可以,但现在我想知道
file.txt
的内容。在这里,我们要求您随问题一起传递一个最小的示例,这样任何人都可以将代码复制到编辑器并运行代码来重现结果。在您的示例中,缺少了一些东西:次要的,如
importnumpyasnp
,以及主要的(file.txt看起来如何)。除此之外,行
W=np.empty((3,3))
W.fill(1.0/3)
可以缩短为
W=np.ones((3,3))/3