我有一个3D矩阵(lon,lat,hight),其中某些元素的值为0.我想用它们的previus级别的数据替换这些值,直到所有零数据被替换。这意味着如果'a'是矩阵[i,j,k],那么我想用[i,j,k-1]替换其中的零值,并且如果前一个值再次为零,则需要previus数据直到它获得价值。我已经尝试了下面的代码,但它给出了错误,而且我做了什么结果是无稽之谈。 LW是一个nc文件。如何用Python中的previus数据替换具有3D矩阵中特定值的元素?
LW = S.netcdf_file('/path','r')
a = LW.variables['nflx'][:,:,:]
lona = LW.variables['lon'][:]
lata = LW.variables['lat'][:]
M = np.zeros([96,73,25])
for i in xrange(0, 96):
for j in xrange(0, 73):
for k in xrange(0,25):
while a==0:
M = a[:,:,k-1]
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
有人有什么想法吗?所有的帮助表示赞赏。
请在您的示例中检查变量'M'和'a'。 'M'是一个数组,但得到一个标量,'a'是一个未定义的数组。 – Chickenmarkus
是的。它是在代码的前一部分中定义的具有3维[i,j,k]的矩阵。我刚刚将M定义为一个新的矩阵,但它与替换为零的'a'相同。 –