2017-03-29 5 views
0

Ich möchte die Variable b, wenn der b ist zwischen (-2,2), ist der Ausgang b; Wenn es außerhalb der Domäne (-2, 2) ist, ist die Ausgabe 0. Ich versuche es oft. Das Problem ist, dass es nicht kontinuierlich arbeiten kann, für die ersten paar Zeilen wird 0 ausgegeben. Es gibt jedoch noch einen gewissen Wert kleiner als- 2, und der Ausgang ist b selbst, sollte es 0.Wie mache ich np.where Arbeit in diesem Beispiel

for k in range (nz): 
    b = xg- nl*z[k] 
    c = xg- nt*z[k] 
    b = np.array(b) 
    c = np.array(c) 
    np.where((b > -2)&(b<2) ,b,0) 
    np.where((c >-2) & (c < 2),c,0) 
+2

Können Sie einige Ein- und Ausgänge bereitstellen? – Crispin

+0

Was Sie haben, sieht für mich korrekt aus, obwohl wohl '(-2 Eric

Antwort

0

Was ist, wenn Sie die Maskierung Arrays multiplizieren?

import numpy as np 

a = np.arange(-5,5) 
# [-5 -4 -3 -2 -1 0 1 2 3 4] 

cond = (a>-2)*(a<2) 
b = np.where(cond,a,0) 
# [ 0 0 0 0 -1 0 1 0 0 0] 
Verwandte Themen