How to combine multiple numpy masks

后端 未结 1 761
长发绾君心
长发绾君心 2021-01-08 01:15
m1 = [0,1,1,3]
m2 = [0,0,1,1]
data = [10,20,30,40]

I want to do something like this:

mask = (m1 == 1) & (m2 == 1)
data[mask] #s         


        
1条回答
  •  长发绾君心
    2021-01-08 01:43

    You are using python lists instead of numpy arrays. Try this instead:

    import numpy as np
    
    m1 = np.array([0,1,1,3])
    m2 = np.array([0,0,1,1])
    
    mask = (m1 == 1) & (m2 == 1)
    data[mask]
    # returns array([30])
    

    In your example, when m1 was a list, m1 == 1 is evaluated as False (the same for m2), so mask was False and data[False] = data[0] = 10.

    0 讨论(0)
提交回复
热议问题