Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
521 views
in Technique[技术] by (71.8m points)

python - How to combine multiple numpy masks

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] #should return 30

Note, this example results in an error

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...