Is there a way to create an array which values are conditioned by the values of another array?

I have an array of values called E representing Energy values

E = np.arange(0.1, 101, 0.1)

And I want to create a group of arrays called a0, a1, a2, a3, being those coefficients that vary depending on the value of the energy, so I want to do something similar to this:

for item in E:
  if item <= 1.28:
      a3, a2, a1, a0 = 0, -8.6616, 13.879, -12.104 
  elif 1.28<item<10:
      a3, a2, a1, a0 = -0.186, 0.428, 2.831, -8.76
  elif item >=10:
      a3, a2, a1, a0 = 0, -0.0365, 1.206, -4.76

This code does not return any mistake, but I do not know how to create lists or arrays with the same length as the E (energy array), with every array containing the values of the coefficients fo specific energy values, so I would really appreciate your help!

Best regards!

Answer

import numpy as np

constants = [[ 0, -8.6616, 13.879, -12.104 ],
             [ 0.186, 0.428, 2.831, -8.76 ],
             [ 0, -0.0365, 1.206, -4.76 ]]

constants = np.array(constants)

E = np.arange(0.1, 101, 0.1)

bins = np.digitize(E, [1.28, 10])

a0 = np.choose(bins, constants[:, 3])
a1 = np.choose(bins, constants[:, 2])
a2 = np.choose(bins, constants[:, 1])
a3 = np.choose(bins, constants[:, 0])