Python Forum
splitting numeric list based on condition
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
splitting numeric list based on condition
#5
I hope this clarifies what's going on in there, but the best way is to check every part of the expression yourself by printing parts of it (or also modifying/playing with them) using interpreter

import numpy as np

# np.array allows to use "array-oriented" math operations
# For example using:
# num_arr == 5

# Doing that to a list will return single "True" or "False"
# Doing that to np.array will return another array containing "True" or "False"
# corresponding to each value in the array

# [5,10] == 5 evaluates to "False"
# np.array([5,10]) == 5 evaluates to "array([True, False])"

# So if you want to easily apply some operation (possibly using some numpy
# functions) to an array then using np.array() makes it convenient.

num_arr = np.array([0,1,2,3,4,5,1,2,3,4,5,2,3,4,5])

indices_where_5_is_found = np.where(num_arr[:-1] == 5)[0] + 1

print('Array:', num_arr, '\n')

print('At which indices 5 was found:\n', indices_where_5_is_found, '\n')

# Notice that if we didn't use [:-1] then the index of the last 5
# would also be included (resulting in additional empty sub-list),
# [:-1] removes the last item from the array.

print("At which indices 5 would be found if [:-1] wasn't used:\n", np.where(num_arr == 5)[0] + 1, '\n')
print("Result if [:-1] wasn't used:\n", np.split(num_arr, np.where(num_arr == 5)[0] + 1), '\n')


# If +1 wasn't used then 5 would be included as the first item of each
# sub-list

# np.array([1,2]) + 1 increases each item of the array by 1, resulting in:
# array([2,3])

print("Indices if +1 wasn't used:\n", np.where(num_arr[:-1] == 5)[0], '\n')
print("Result if +1 wasn't used:\n", np.split(num_arr, np.where(num_arr[:-1] == 5)[0]), '\n')

arrays = np.split(num_arr, indices_where_5_is_found)
print('Final result:\n', arrays, '\n')
Output:
Array: [0 1 2 3 4 5 1 2 3 4 5 2 3 4 5] At which indices 5 was found: [ 6 11] At which indices 5 would be found if [:-1] wasn't used: [ 6 11 15] Result if [:-1] wasn't used: [array([0, 1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([2, 3, 4, 5]), array([], dtype=int32)] Indices if +1 wasn't used: [ 5 10] Result if +1 wasn't used: [array([0, 1, 2, 3, 4]), array([5, 1, 2, 3, 4]), array([5, 2, 3, 4, 5])] Final result: [array([0, 1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([2, 3, 4, 5])]
Reply


Messages In This Thread
RE: splitting numeric list based on condition - by michalmonday - May-26-2019, 03:29 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Numeric Enigma Machine idev 9 698 Mar-29-2024, 06:15 PM
Last Post: idev
  unable to remove all elements from list based on a condition sg_python 3 506 Jan-27-2024, 04:03 PM
Last Post: deanhystad
  Sent email based on if condition stewietopg 1 910 Mar-15-2023, 08:54 AM
Last Post: menator01
  create new column based on condition arvin 12 2,409 Dec-13-2022, 04:53 PM
Last Post: jefsummers
  How to assign a value to pandas dataframe column rows based on a condition klllmmm 0 878 Sep-08-2022, 06:32 AM
Last Post: klllmmm
  select Eof extension files based on text list of filenames with if condition RolanRoll 1 1,561 Apr-04-2022, 09:29 PM
Last Post: Larz60+
  Splitting strings in list of strings jesse68 3 1,829 Mar-02-2022, 05:15 PM
Last Post: DeaD_EyE
Question Numeric Anagrams - Count Occurances monty024 2 1,540 Nov-13-2021, 05:05 PM
Last Post: monty024
  How to get datetime from numeric format field klllmmm 3 2,036 Nov-06-2021, 03:26 PM
Last Post: snippsat
  How to map two data frames based on multiple condition SriRajesh 0 1,521 Oct-27-2021, 02:43 PM
Last Post: SriRajesh

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020