As written, your arr1 and arr2 appears to be lists, but since you've added NumPy as a tag I will assume that they in fact are NumPy arrays:
import numpy as np
arr1 = np.array([1, 3, 5, 9, 4])
arr2 = np.array([5, 8, 2, 3, 9])
(if you print(arr1) you indeed get what you write). You can now simply do
threshold = 5
arr1[arr2 < threshold] = 0
Read it like "set the elements within arr1 for which the corresponding values in arr2 are less than threshold to 0".
This will work with multi-dimensional NumPy arrays as well.
To better understand what's actually going on, you can try play around with just arr2 < threshold. Try print it out:
print(arr2 < threshold)
This is referred to as a mask. It is in fact itself a (boolean) NumPy array:
mask = arr2 < threshold
mask[0] = True # make a change!
arr1[mask] = 42 # now apply the mask
Note that in the above examples, arr1 itself is changed (or mutated). That is, the original data within arr1 is not kept. If you want to keep arr1, take a backup first, or equivalently copy arr1 to a new array and use that:
import numpy as np
arr1 = np.array([1, 3, 5, 9, 4])
arr2 = np.array([5, 8, 2, 3, 9])
arr3 = arr1.copy()
arr3[arr2 < threshold] = 0 # mutate arr3, keeping arr1 as is