numpy中的Python变量赋值

2024-05-29 03:45:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: orinnpzerosnanwheretmppress

热门问题