Python: Select subset from list based on index set

前端 未结 5 1036
借酒劲吻你
借酒劲吻你 2020-12-12 15:54

I have several lists having all the same number of entries (each specifying an object property):

property_a = [545., 656., 5.4, 33.]
property_b = [ 1.2,  1.3         


        
5条回答
  •  [愿得一人]
    2020-12-12 16:48

    I see 2 options.

    1. Using numpy:

      property_a = numpy.array([545., 656., 5.4, 33.])
      property_b = numpy.array([ 1.2,  1.3, 2.3, 0.3])
      good_objects = [True, False, False, True]
      good_indices = [0, 3]
      property_asel = property_a[good_objects]
      property_bsel = property_b[good_indices]
      
    2. Using a list comprehension and zip it:

      property_a = [545., 656., 5.4, 33.]
      property_b = [ 1.2,  1.3, 2.3, 0.3]
      good_objects = [True, False, False, True]
      good_indices = [0, 3]
      property_asel = [x for x, y in zip(property_a, good_objects) if y]
      property_bsel = [property_b[i] for i in good_indices]
      

提交回复
热议问题