मैं एक बूलियन मुखौटा मूल्य बताए समस्या की आवश्यकता है कुशल बूलियन मुखौटा आपरेशन ।
यह एक बहु-आयाम मुखौटा और मैं का उपयोग कर रहा हूँ einsum
परिणाम प्राप्त करने के लिए, लेकिन आपरेशन बहुत कुशल नहीं है, और मैं सोच रहा हूँ, अगर मैं कुछ प्राप्त कर सकते हैं मदद के साथ यह
यहाँ मेरे वर्तमान समाधान: (दोनों mask, truth_value, false_value
कर रहे हैं डमी डेटा के साथ dtype और आकार से मेल खाता करने के लिए मेरी समस्या नहीं है ।
mask = np.random.randn(1000, 50)> 0.5
truth_value = np.random.randn(50, 10)
false_value = np.random.randn(10)
objective = np.einsum('ij,jk->ijk', mask, truth_value) + np.einsum('ij,k->ijk', ~mask, false_value)
वहाँ है किसी भी तेजी से रास्ता पाने के लिए objective
दिया mask, truth_value, false_value
?
जबकि मैं इंतज़ार कर रहा था, समझ से बाहर एक तेजी से रास्ते
objective = np.where(mask[...,np.newaxis], np.broadcast_to(truth_value, (1000, 50, 10)), np.broadcast_to(false_value, (1000, 50, 10)))
लेकिन वहाँ है किसी भी तेजी से विकल्प है ?
einsum
समाधान! एक छोटा सा तेजी सेnp.where
+np.broadcast_to
आधारित समाधान है ।