np.put(press,np.squeeze(np.where(press >= psfc))[1:],np.nan)
missing = np.logical_or(np.logical_or(np.isnan(press),np.isnan(qhum)),np.logical_or(np.isnan(tmp_k),np.isnan(hgt)))
allmissing = np.zeros(nlev,dtype = 'float32')
allmissing[:] = np.nan
tmp_k = tmp_k[np.logical_not(np.isnan(np.where(missing,np.nan,tmp_k)))]
allmissing[:len(tmp_k)] = tmp_k
tmp_k = allmissing
qhum = qhum[np.logical_not(np.isnan(np.where(missing,np.nan,qhum)))]
allmissing[:len(qhum)] = qhum
qhum = allmissing
В приведенном выше коде при изменении значения qhum также изменяется значение tmp_k. Когда переменная allmissing переназначается путем изменения ее значения на qhum, начальное назначение также изменяется. i, e tmp_k и qhum имеют одинаковые значения ... Почему это происходит?
import numpy as np
press_in = [98100,97400,95300,94100]
tmp_in = [285.6,289,290.4,290]
qhum_in = [0.0087998267,0.0089221532,0.0095515558,0.0080244699]
psfc = 980.085*1e2
q2m = 0.00907988
t2m = 285.615
nlev = 4 + 1
press = np.zeros(nlev,dtype = 'float32')
press[:] = np.nan
press[1:] = press_in
tmp_k = np.zeros(nlev,dtype = 'float32')
tmp_k[:] = np.nan
tmp_k[1:] = tmp_in
qhum = np.zeros(nlev,dtype = 'float32')
qhum[:] = np.nan
qhum[1:] = qhum_in
tmp_k[0] = t2m
hgt [0] = h2m
qhum [0] = q2m
press[0] = psfc
np.put(press,np.squeeze(np.where(press >= psfc))[1:],np.nan)
missing = np.logical_or(np.logical_or(np.isnan(press),np.isnan(qhum)),np.logical_or(np.isnan(tmp_k),np.isnan(hgt)))
allmissing = np.zeros(nlev,dtype = 'float32')
allmissing[:] = np.nan
tmp_k = tmp_k[np.logical_not(np.isnan(np.where(missing,np.nan,tmp_k)))]
allmissing[:len(tmp_k)] = tmp_k
tmp_k = allmissing
qhum = qhum[np.logical_not(np.isnan(np.where(missing,np.nan,qhum)))]
allmissing[:len(qhum)] = qhum
qhum = allmissing
выше - mcve