मेरे पास दो त्रि-आयामी सरणी, ए और बी हैं, और उन तत्वों के साथ बी के 2 डी सबरेरे को ढूंढना चाहते हैं जहां न्यूनतम तीसरे अक्ष के साथ न्यूनतम था, यानीकिसी अन्य सरणी में धुरी के साथ न्यूनतम मानों के अनुरूप सरणी खोजें
a=n.random.rand(20).reshape((5,2,2))
b=n.arange(20).reshape((5,2,2))
c=n.argmin(a,2) #indices with minimal value of a
d=n.zeros_like(c) #the array I want
for i in range(5):
for j in range(2):
d[i,j] = b[i,j,c[i,j]]
क्या कोई तरीका है कि मैं डबल लूप के बिना इन मानों को प्राप्त कर सकता हूं?
मैं इस जवाब के बारे में पता कर रहा हूँ: replace min value to another in numpy array लेकिन अगर मैं यह मेरी 3 डी सरणियों के लिए काम करना चाहता हूँ मैं संचालन देगी का एक बहुत कर दिया था - और अगर वहाँ सरल कुछ है मैं सोच रहा हूँ।
In [83]: x, y, z = a.shape
In [84]: b[np.repeat(np.arange(x), y), np.tile(np.arange(y), x), c.ravel()].reshape(x, y)
यहाँ np.repeat(np.arange(x), y)
आप पहली बार अक्ष की इसी सूचकांक दे देंगे:
करने के लिए (5,2) इन रुप और पुन परिणाम एक और उत्तर से की 'सुझाव ogrid'' mgrid' संस्करण की तरह दिखना चाहिए। – hpaulj
@ hpaulj हां, दुर्भाग्य से मैं उस समारोह से परिचित नहीं था। – Kasramvd