2013-03-06 26 views
13

सूचकांक करने के लिए एक numpy सरणी के बीच अंक, आप यह कर सकते हैं:सूचकांक एक numpy सरणी के बीच?

x = np.arange(10) 
middle = x[len(x)/4:len(x)*3/4] 

वहाँ सरणी के बीच अनुक्रमण के लिए एक आशुलिपि है? उदाहरण के लिए, n या 2n तत्व len(x)/2 पर बंद हो गए हैं? क्या इसका एक अच्छा एन-आयामी संस्करण है?

+0

मैं वहाँ नहीं लगता कि आपके द्वारा बनाए गए कार्यों के अलावा एक बेहतर तरीका है। लाइब्रेरी में सबसे समान चीज शायद ['np.fft.fftshift'] है (http://docs.scipy.org/doc/numpy/reference/generated/numpy.fft.fftshift.html) जो सरणी को बदलती है इंडेक्स 0 पर मध्य रखें। – Jaime

+0

हाँ, यह दूसरा विकल्प था जिसे मैंने माना था, लेकिन यह एक टन बेहतर नहीं है: आपको 'x = np.concatenate ([np.fftshift [: n], np करना होगा। fftshift [-n:]]) 'या इसी तरह के। – keflavich

+1

ऐसा लगता है कि यह सिर्फ एक फ़ंक्शन बना रहा है (उदाहरण के लिए, 'मध्य = लैम्ब्डा x: x [लेन (x)/4: लेन (x) * 3/4] ') सबसे सरल समाधान होगा। – cge

उत्तर

5

cge के रूप में कहा, सबसे आसान तरीका यह एक लैम्ब्डा समारोह में तब्दील हो, की तरह तो कर रहा है:

x = np.arange(10) 
middle = lambda x: x[len(x)/4:len(x)*3/4] 

या n आयामी तरीका है:

middle = lambda x: x[[slice(np.floor(d/4.),np.ceil(3*d/4.)) for d in x.shape]] 
+0

तेजी से आगे 4 साल, और यह अब एक चेतावनी उत्पन्न करता है "VisibleDeprecation चेतावनी: एक पूर्णांक के बजाय एक गैर-पूर्णांक संख्या का उपयोग करने से भविष्य में एक त्रुटि होगी"। – kabammi

संबंधित मुद्दे