2013-04-24 9 views
5

मैं एक मैट्रिक्स और एक बूलियन वेक्टर है:पंक्तियां चुनें

>>>from numpy import * 
>>>a = arange(20).reshape(4,5) 
array([[ 0, 1, 2, 3, 4], 
    [ 5, 6, 7, 8, 9], 
    [10, 11, 12, 13, 14], 
    [15, 16, 17, 18, 19]]) 

>>>b = asarray([1, 1, 0, 1]).reshape(-1,1) 
array([[1], 
    [1], 
    [0], 
    [1]]) 

अब मैं इस मैट्रिक्स में सभी इसी पंक्तियों का चयन करने के लिए जहां वेक्टर में इसी सूचकांक है चाहता हूँ शून्य के बराबर

>>>a[b==0] 
array([10]) 

मैं इसे कैसे बना सकता हूं ताकि यह इस विशेष पंक्ति को वापस कर सके?

[10, 11, 12, 13, 14] 

उत्तर

2

b के आकार कुछ हद तक अजीब बात है, लेकिन अगर आप एक अच्छे सूचकांक के रूप में यह तैयार कर सकते हैं यह एक साधारण चयन है: "सभी पंक्तियों जहां चयन

idx = b.reshape(a.shape[0]) 
print a[idx==0,:] 

>>> [[10 11 12 13 14]] 

आप के रूप में इस पढ़ सकते हैं सूचकांक 0 है, और चयनित प्रत्येक पंक्ति के लिए सभी कॉलम लेते हैं "। आपका अपेक्षित उत्तर वास्तव में सूची-सूची-सूची होना चाहिए क्योंकि आप उन सभी पंक्तियों के लिए पूछ रहे हैं जो मानदंड से मेल खाते हैं।

संबंधित मुद्दे