का उपयोग NumPy broadcasting
-
(a[:,None]==b).astype(int)
नमूना रन -
In [107]: (a[:,None]==b)*1
Out[107]:
array([[1, 0, 0],
[1, 0, 0],
[0, 0, 1],
[0, 1, 0],
[0, 1, 0],
[0, 1, 0]])
-
In [104]: a
Out[104]: array([5, 5, 3, 4, 4, 4])
In [105]: b
Out[105]: array([5, 4, 3])
In [106]: (a[:,None]==b).astype(int)
Out[106]:
array([[1, 0, 0],
[1, 0, 0],
[0, 0, 1],
[0, 1, 0],
[0, 1, 0],
[0, 1, 0]])
तो सबसे सरल करके, आप कॉम्पैक्ट मतलब है, यहाँ एक संशोधित एक प्रकार रूपांतरण करना है स्पष्टीकरण:None
है numpy.newaxis
के लिए उपनाम, जिसका उपयोग एक नया अक्ष जोड़ने के लिए किया जाता है (length=1
के साथ धुरी)। तो, इस मामले में, a[:,None]
के साथ हमें संस्करण a
मिलता है। 2D
संस्करण, a.reshape(-1,1)
उनमें से एक होने के कई अन्य तरीके हैं। यह के लिए 1D
b
के मुकाबले तुलना करने की अनुमति देता है, जिसके परिणामस्वरूप 2 डी सरणी, एक बूलियन सरणी होती है। अंतिम चरण int
सरणी में रूपांतरण है।
चरण-दर-चरण रन -
In [141]: a
Out[141]: array([5, 5, 3, 4, 4, 4])
In [142]: b
Out[142]: array([5, 4, 3])
In [143]: a[:,None]
Out[143]:
array([[5],
[5],
[3],
[4],
[4],
[4]])
In [144]: a[:,None] == b
Out[144]:
array([[ True, False, False],
[ True, False, False],
[False, False, True],
[False, True, False],
[False, True, False],
[False, True, False]], dtype=bool)
In [145]: (a[:,None] == b).astype(int)
Out[145]:
array([[1, 0, 0],
[1, 0, 0],
[0, 0, 1],
[0, 1, 0],
[0, 1, 0],
[0, 1, 0]])
आपको बहुत बहुत धन्यवाद! यह ठीक वही है जिसकी मुझे तलाश थी। – David
'ए [:, कोई नहीं]' 'a.reshape (-1,1)' के समतुल्य प्रतीत होता है। क्या आप समझा सकते हैं कि यह वास्तव में कैसे काम करता है? – David
@ डेविड पोस्ट में कुछ टिप्पणियां जोड़े गए। उम्मीद है कि वे मदद करते हैं! – Divakar