MoneyBall
MoneyBall

Reputation: 2563

randomly choose value between two numpy arrays

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?

Upvotes: 3

Views: 57

Answers (1)

rikyeah
rikyeah

Reputation: 2013

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)))

Upvotes: 2

Related Questions