मैं एक numpy सरणी बनाना चाहता हूं जिसमें एक विशिष्ट स्थान पर कितनी बार एक मान (1-3 के बीच) होता है। उदाहरण के लिए, अगर मेरे पास है:गणना की एक संख्यात्मक सरणी संपादित करने के लिए एक लाइन समाधान? (पायथन)
a = np.array([[1,2,3],
[3,2,1],
[2,1,3],
[1,1,1]])
मैं बहुत की तरह एक सरणी वापस प्राप्त करना चाहते हैं:
[[[ 1 0 0]
[ 0 1 0]
[ 0 0 1]]
[[ 0 0 1]
[ 0 1 0]
[ 1 0 0]]
[[ 0 1 0]
[ 1 0 0]
[ 0 0 1]]
[[ 1 0 0]
[ 1 0 0]
[ 1 0 0]]]
कहाँ सरणी मुझसे कहता है कि 1 पहले की स्थिति में एक बार होता है, 2 में एक बार होता है दूसरी स्थिति, 3 तीसरी स्थिति में एक बार होती है, 1 चौथी स्थिति में एक बार होता है, आदि। बाद में, मेरे पास समान आयामों के अधिक इनपुट एरे होंगे, और मैं इस सरणी के मानों के योगों को जोड़ना चाहता हूं मायने रखता है
कोड मैं अभी है:
a = np.array([[1,2,3],
[3,2,1],
[2,1,3],
[1,1,1]])
cumulative = np.zeros((4,3,3))
for r in range(len(cumulative)):
for c in range(len(cumulative[0])):
cumulative[r, c, a[r,c]-1] +=1
यह मैं उत्पादन मैं चाहता हूँ देता है। काम नहीं करता है
cumulative[:, :, a[:, :]-1] +=1
इस लाइन, और मैं कुछ भी ऑनलाइन कैसे यह कार्रवाई करने पर नहीं मिल सकता है: हालांकि, मैं एक लाइन में छोरों के लिए गाढ़ा करने के लिए, एक पंक्ति इस के समान का उपयोग कर चाहते हैं। कोई सुझाव?
यह अच्छा है! क्या आप समझेंगे कि यह कैसे काम करता है? (क्षमा करें, पाइथन के लिए अपेक्षाकृत नया) –