Numpy np.where condición múltiple

Necesito trabajar con múltiples condiciones usando numpy.

Estoy probando este código que parece funcionar.

Mi pregunta es: ¿Hay otra alternativa que pueda hacer el mismo trabajo?

Mur=np.array([200,246,372])*pq.kN*pq.m Mumax=np.array([1400,600,700])*pq.kN*pq.m Mu=np.array([100,500,2000])*pq.kN*pq.m Acreq=np.where(Mu<Mur,0,"zero") Acreq=np.where(((Mur<Mu)&(MuMumax,60,Acreq) Print(Acreq) ['0' '45' '60'] 

A partir de esto:

 Mur = np.array([200,246,372])*3*5 Mumax = np.array([1400,600,700])*3*5 Mu = np.array([100,500,2000])*3*5 Acreq = np.where(MuMumax,60,Acreq) print(Acreq) ['0' '45' '60'] 

Prueba esto:

 conditions = [MuMumax ] choices = [ 0, 45, 60 ] Acreq = np.select(conditions, choices, default='zero') print(Acreq) ['0' '45' '60'] 

Esto también funciona:

 np.where((MurMumax,60,np.where(Mu 

Puedes usar el método pd.cut () de Pandas:

Generar series aleatorias de enteros:

 In [162]: import pandas as pd In [163]: s = pd.Series(np.random.randint(-3,10, 10)) In [164]: s Out[164]: 0 6 1 -3 2 6 3 6 4 7 5 7 6 3 7 -2 8 9 9 1 dtype: int32 

categorizarlos:

 In [165]: pd.cut(s, bins=[-np.inf, 2, 5, np.inf], labels=['0', '45', '60']) Out[165]: 0 60 1 0 2 60 3 60 4 60 5 60 6 45 7 0 8 60 9 0 dtype: category Categories (3, object): [0 < 45 < 60]