Переменная Python в numpy - PullRequest
0 голосов
/ 30 октября 2019
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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...