I want to split a numpy array based on the values of two columns. I want to split at the index after both of the first two columns reach their maximum (simultaneously). Each column reaches its maximum several times. The maximum of each column can be seen individually (when the other one is not in its maximum), But I need to separate when they are both at their maximum value. Lets say I have
arr = [[ 1., 5, 12],
[ 1., 9, 5],
[15., 5, 5],
[25., 7, 4],
[25., 9, 4],
[1.5, 4, 10],
[ 1., 8, 7],
[20., 5, 6],
[25., 8, 3],
[25., 9, 3]]
I want to get:
arr_1 = [[ 1., 5, 12],
[ 1., 9, 5],
[15., 5, 5],
[25., 7, 4],
[25., 9, 4]]
arr_2 = [[1.5, 4, 10],
[ 1., 8, 7],
[20., 5, 6],
[25., 8, 3],
[25., 9, 3]]
Assuming you want the output to be a list of lists, you can iterate over the elements of the original array and look for a "separating" element.
One possible implementation:
def split_at_max(arr):
m0 = max(a[0] for a in arr)
m1 = max(a[1] for a in arr)
res = [[]]
for i,a in enumerate(arr):
res[-1].append(a)
if (a[:2] == [m0, m1]) and (i != len(arr) - 1):
res.append([])
return res
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With