को देखते हुए समान अवधि की दो सरणियों, एक होल्डिंग डेटा, एक परिणाम पकड़े लेकिन शुरू में शून्य पर सेट है, जैसे हैं:अजगर/NumPy: चल रहे योग को लागू करने (लेकिन काफी नहीं)
a = numpy.array([1, 0, 0, 1, 0, 1, 0, 0, 1, 1])
b = numpy.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
मैं था ए में तीन आसन्न तत्वों के सभी संभावित सबसेट्स की गणना की गणना करना। यदि योग 0 या 1 है, तो बी में तीन संबंधित तत्व अपरिवर्तित छोड़ दिए गए हैं; , ख है
for x in range(len(a)-2):
if a[x:x+3].sum() > 1:
b[x:x+3] = 1
इस के बाद: केवल तभी योग 1 से अधिक है, ताकि बाद गणना ख
array([0, 0, 0, 1, 1, 1, 0, 1, 1, 1])
एक साधारण पाश यह पूरा होगा बन जाता है, 1 करने के लिए ख सेट में तीन इसी तत्व हैं वांछित रूप।
मुझे इसे बड़ी मात्रा में डेटा के लिए करना है, इसलिए गति एक मुद्दा है। ऊपर ऑपरेशन करने के लिए NumPy में एक तेज तरीका है?
(मुझे लगता है कि यह एक संकल्प के समान है, लेकिन काफी समान नहीं है)।
बिल्कुल जो मैं सुझाव देने जा रहा था, लेकिन 30 सेकंड तेज। ;) –
ओपी के 'ए' पर, यह वास्तव में धीमा है, लेकिन सरणी बढ़ने के साथ यह बहुत बेहतर लगता है। –
+1: यहां न्यूम की सुविधाओं का बहुत अच्छा उपयोग किया जाता है। सुरुचिपूर्ण और कुशल कोड। – EOL