我有一個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'相同。 –