Instead of values we can use functions (Or you can use lambda functions...):
```python
import numpy as np
def function_a(input):
return input**2
def function_b(input):
return np.sqrt(input)
a = np.arange(1, 11)
b = np.piecewise(a, [a <5,a ==0,a> 5], [function_a, 0, function_b])
print(a) # -> [ 1 2 3 4 5 6 7 8 9 10]
print(b) # -> [ 1 4 9 16 0 2 2 2 3 3]
```
**However, the results for the sqrt are strange.** Here we see a case where the automatic dtype switch to float64 failed. This is why I overzealously mange / define the dtypes.
```python
import numpy as np
def function_a(input):
return input**2
def function_b(input):
return np.sqrt(input)
a = np.arange(1, 11).astype(dtype=np.float32)
b = np.piecewise(a, [a <5,a ==0,a> 5], [function_a, 0, function_b])