मान लीजिए मैंNumpy बहुआयामी सरणी टुकड़ा करने की क्रिया
x = numpy.arange(27).reshape((3, 3, 3))
अब के साथ एक 3x3x3 numpy सरणी को परिभाषित किया है, मैं x[:, 0, 1]
, जो array([ 1, 10, 19])
रिटर्न के साथ (0,1) प्रत्येक 3x3 subarray के तत्व से युक्त एक सरणी मिल सकती है। क्या होगा यदि मेरे पास एक tuple (m, n) है और एक tuple में संग्रहीत प्रत्येक subarray (0,1) के (एम, एन) तत्व को पुनर्प्राप्त करना चाहते हैं?
उदाहरण के लिए, मान लीजिए कि मेरे पास t = (0, 1)
है। मैंने x[:, t]
की कोशिश की, लेकिन इसका सही व्यवहार नहीं है - यह प्रत्येक उपन्यास की पंक्तियों 0 और 1 देता है। मुझे मिला सबसे सरल समाधान
x.transpose()[tuple(reversed(t))].transpose()
लेकिन मुझे यकीन है कि एक बेहतर तरीका होना चाहिए। बेशक, इस मामले में, मैं x[:, t[0], t[1]]
कर सकता था, लेकिन इसे उस मामले में सामान्यीकृत नहीं किया जा सकता है जहां मुझे नहीं पता कि x
और t
कितने आयाम हैं।
कूल, के लिए धन्यवाद: तो यहाँ एक
slice
वस्तु का उपयोग कर बराबर बात है मदद (आप भी, wim)। मुझे s_ और slice के लिए अधिक उदाहरण मिलते हैं [scipy] (http://www.scipy.org/Numpy_Example_List)। मुझे लगता है कि मैंने पहले उस सूची को देखा था, लेकिन कुछ भी नहीं देखा जो प्रासंगिक दिखता था। – James