ठीक है, कुछ खोज के बाद मुझे ऐसा कोई प्रश्न नहीं मिल रहा है जो सीधे इसे हल करता है। मैंने मुखौटा सरणी में देखा है और हालांकि वे शांत लगते हैं, मुझे यकीन नहीं है कि वे मुझे क्या चाहिए।पायथन numpy मुखौटा मतलब प्रदर्शन
zone_data
एक ही मूल्य के साथ तत्वों की गुच्छों के साथ 2 डी numpy सरणी है:
2 NumPy सरणी पर विचार करें। यह मेरा 'जोन' है।
value_data
मनमाना मूल्यों के साथ एक 2-डी numpy सरणी (zone_data का सटीक आकार) है।
मैं जोन_डेटा/value_data के समान आकार की एक numpy सरणी चाहता हूं जिसमें ज़ोन संख्याओं के स्थान पर प्रत्येक जोन का औसत मान है।
उदाहरण ... ascii कला रूप में।
zone_data
(4 अलग क्षेत्र):
1, 1, 2, 2
1, 1, 2, 2
3, 3, 4, 4
3, 4, 4, 4
value_data
:
1, 2, 3, 6
3, 0, 2, 5
1, 1, 1, 0
2, 4, 2, 1
मेरी परिणाम है, यह result_data
फोन:
1.5, 1.5, 4.0, 4.0
1.5, 1.5, 4.0, 4.0
2.0, 2.0, 1.0, 1.0
2.0, 2.0, 1.0, 1.0
यहाँ कोड मैं है। यह एक सही परिणाम देने के रूप में ठीक काम करता है।
result_data = np.zeros(zone_data.shape)
for i in np.unique(zone_data):
result_data[zone_data == i] = np.mean(value_data[zone_data == i])
मेरे सरणियों बड़े हैं और मेरे कोड स्निपेट कई सेकंड लेता है। मुझे लगता है कि मेरे पास ज्ञान अंतर है और कुछ भी उपयोगी नहीं है। लूप पहलू को लाइब्रेरी या कुछ ... को सौंपने की जरूरत है!
मुझे यह तेज़ बनाने में मदद चाहिए! पाइथन देवताओं, मैं तुम्हारा ज्ञान चाहता हूँ!
संपादित करें - जोड़ने बेंचमार्क स्क्रिप्ट
import numpy as np
import time
zones = np.random.randint(1000, size=(2000,1000))
values = np.random.rand(2000,1000)
print 'start method 1:'
start_time = time.time()
result_data = np.zeros(zones.shape)
for i in np.unique(zones):
result_data[zones == i] = np.mean(values[zones == i])
print 'done method 1 in %.2f seconds' % (time.time() - start_time)
print
print 'start method 2:'
start_time = time.time()
#your method here!
print 'done method 2 in %.2f seconds' % (time.time() - start_time)
मेरी उत्पादन:
start method 1:
done method 1 in 4.34 seconds
start method 2:
done method 2 in 0.00 seconds
'bincount' का उत्कृष्ट उपयोग।+1 –
डीएसएम, यह कमाल है! मैं ज्यादातर अपने जैसे लोगों की वजह से एसओ से प्यार करता हूं जो कुछ विशिष्ट ज्ञान साझा कर सकते हैं जो मुझे खुद को ढूंढने में काफी समय लगेगा। आपको बहुत - बहुत धन्यवाद! यह सिर्फ एक छोटा अभ्यास नहीं था ... यह एक आवेदन में मेरे पास बोतल की गर्दन में से एक खोल देगा। "Np.allclose" भी प्यार करो ... क्या एक मणि है। – user1269942