के हिस्से पर पुनरावृत्ति को गति कैसे करें मेरे पास numpy में एक बड़ा 3 आयामी सरणी है (कहें आकार 100x100x100 कहें)। मैं इसके कई हिस्सों (लगभग 70% तत्वों) पर फिर से शुरू करना चाहता हूं और मेरे पास एक बुलियन मैट्रिक्स है जो एक ही आकार है और यह परिभाषित करता है कि तत्व को ऑपरेशन किया जाना चाहिए या नहीं।एक numpy सरणी
मेरे वर्तमान विधि आकार की एक सरणी "coords" (एन, 3) जो सभी coords जिस पर संचालन करने के लिए और फिर
for i in np.arange(many_iterations):
for j in coords:
large_array[j] = do_something(large_array[tuple(j)])
यह वास्तव में बेहतर होगा शामिल बनाने के लिए पहला है पूरे सरणी का मूल्यांकन करने के लिए और बूलियन सरणी का परीक्षण करने के लिए लूप में एक अतिरिक्त ऑपरेशन शामिल करें (ध्यान रखें कि सच्चाई मूल्यांकन तब एक से अधिक बार कई बार किया जाता है)। मेरे बारे में सोचा कि इस मामले में भुगतान बंद छोरों
large_array = do_something(large_array if condition True)
कैसे इस अंतिम पंक्ति इस मामले में काम करने के लिए किया जाएगा के लिए से छुटकारा पाने की जाएगी था?
'do_something' क्या है, इस पर निर्भर करता है कि आप' big_array [boolean_array] = do_something (big_array [boolean_array]) ', या कुछ कम अभी भी कर सकते हैं। –
मुझे लगता है कि आपकी भावना सही है, यह पूरे सरणी पर ऑपरेशन करने के आपके लाभ के लिए हो सकता है और फिर 'numpy.where' जैसे कुछ का उपयोग करें। –