randomly choose value between two numpy arrays

Viewed 48

I have two numpy arrays:

left = np.array([2, 7])
right = np.array([4, 7])
right_p1 = right + 1

What I want to do is

rand = np.zeros(left.shape[0])
for i in range(left.shape[0]):
  rand[i] = np.random.randint(left[i], right_p1[i])

Is there a way I could do this without using a for loop?

1 Answers

You could try with:

   extremes = zip(left, right_p1)
   rand = map(lambda x: np.random.randint(x[0], x[1]), extremes)

This way you will end up with a map object. If you need to save memory, you can keep it that way, otherwise you can get the full np.array passing through a list conversion, like this:

rand = np.array(list(map(lambda x: np.random.randint(x[0], x[1]), extremes)))
Related