I have a 3d numpy array like this (as an example)
a = np.array([
[[1, -2, 3, 4],[5, 6, 7, 8]],
[[9, 10, 11, 12],[13, 14, 15, 16]]
])
I want to apply the following operations only to elements within the column with index 1 in the inner dimension. The elements are
[-2,6,10,14] for the example above. The operations would be:
# variables used in the operations
v1, v2, v3 = 12, 4, 2
# the following two operations should only be applied to specified column across all the array
# 1st operation
a[a >= v1] = v1
# output
a = np.array([
[[1, -2, 3, 4],[5, 6, 7, 8]],
[[9, 10, 11, 12],[13, 12, 15, 16]]
])
# 2nd operation
f = lambda x: -2 if(x==-2) else (x-v3)/(v2-v3)
a = f(a)
# output
a = np.array([
[[1, -2, 3, 4],[5, 2, 7, 8]],
[[9, 4, 11, 12],[13, 5, 15, 16]]
])
Can someone help me? I have looked into several NumPy methods but can't seem to adapt to my example.