I have (n,m) array arr1, where n is almost 2.5 million and m =100. Another arr2 is (n, 1).
I want to modify arr1 such that:
arr1[i, j] = arr1[i, j], if j <= arr2[i]
= nan , otherwise
Sample arr1 and arr2 are as follows:
>>> import numpy as np
>>> arr1 = np.random.randint(500, size=(4,3))
>>> arr1
array([[147, 46, 168],
[232, 446, 415],
[ 21, 245, 214],
[246, 194, 271]])
>>> arr2 = np.random.randint(4, size=(4,))
>>> arr2
array([3, 0, 2, 1])
Desired output in this case would be:
array([[147, 46, 168],
[nan, nan, nan],
[ 21, 245, nan],
[246, nan, nan]])
Realistic sample to try for speed is
>>> import numpy as np
>>> arr1 = np.random.randint(500, size=(2500000, 100))
>>> arr2 = np.random.randint(101, size=(2500000,))