Python 在特定数组位置计算表达式

Python 在特定数组位置计算表达式,python,arrays,numpy,Python,Arrays,Numpy,我有两个NumPy数组dQ/dx和dQ/dt,我想计算V=(dQ/dt)/(dQ/dx),但只在dQ/dx和dQ/dt都非零的位置。如果dQ/dx或dQ/dt等于零,则V=0。在示例dQ/dx=[0,0,0.2,0.1],dQ/dt=[0.1,0,0.4,0]中,应该给出V=[0,0,2,0]。 我可以通过在所有数组元素上循环来实现这一点,但有没有更“NumPy”的方法呢?使用and是一种可行的方法: [216]中的:将numpy作为np导入 [217]中:dQdx=np.asarray([0,

我有两个NumPy数组
dQ/dx
dQ/dt
,我想计算
V=(dQ/dt)/(dQ/dx)
,但只在
dQ/dx
dQ/dt
都非零的位置。如果
dQ/dx
dQ/dt
等于零,则
V=0
。在示例
dQ/dx=[0,0,0.2,0.1]
dQ/dt=[0.1,0,0.4,0]
中,应该给出
V=[0,0,2,0]
。 我可以通过在所有数组元素上循环来实现这一点,但有没有更“NumPy”的方法呢?

使用and是一种可行的方法:

[216]中的
:将numpy作为np导入
[217]中:dQdx=np.asarray([0,0,0.2,0.1])
[218]中:dQdt=np.asarray([0.1,0,0.4,0])
在[219]中:V=np.其中(np.逻辑_和(dQdt,dQdx),dQdt/dQdx,0)
:1:运行时警告:在true_divide中遇到被零除
V=np.式中(np.逻辑_和(dQdt,dQdx),dQdt/dQdx,0)
:1:RuntimeWarning:在true\u divide中遇到无效值
V=np.式中(np.逻辑_和(dQdt,dQdx),dQdt/dQdx,0)
In[220]:V
Out[220]:数组([0,0,2,0.])
有不同的方法可以消除这种丑陋的
运行时警告。例如,您可以使用布尔数组
np.logical_和(dQdt,dQdx)
对两个数组中的非零项进行索引,如下所示:

[221]中的
V=np.类零(dQdx)
在[222]中:idx=np.logical_和(dQdt,dQdx)
In[223]:V[idx]=dQdt[idx]/dQdx[idx]
In[224]:V
Out[224]:数组([0,0,2,0.])