def _getdata(self, keys): out = [] naxis = len(self.hdu.shape) # Determine the number of slices in the set of input keys. # If there is only one slice then the result is a one dimensional # array, otherwise the result will be a multidimensional array. numSlices = 0 for idx, key in enumerate(keys): if isinstance(key, slice): numSlices = numSlices + 1 for idx, key in enumerate(keys): if isinstance(key, slice): # OK, this element is a slice so see if we can get the data for # each element of the slice. axis = self.hdu.shape[idx] ns = _normalize_slice(key, axis) for k in range(ns.start, ns.stop): key1 = list(keys) key1[idx] = k key1 = tuple(key1) if numSlices > 1: # This is not the only slice in the list of keys so # we simply get the data for this section and append # it to the list that is output. The out variable will # be a list of arrays. When we are done we will pack # the list into a single multidimensional array. out.append(self[key1]) else: # This is the only slice in the list of keys so if this # is the first element of the slice just set the output # to the array that is the data for the first slice. # If this is not the first element of the slice then # append the output for this slice element to the array # that is to be output. The out variable is a single # dimensional array. if k == ns.start: out = self[key1] else: out = np.append(out, self[key1]) # We have the data so break out of the loop. break if isinstance(out, list): out = np.array(out) return out
def _iswholeline(indx, naxis): if _is_int(indx): if indx >= 0 and indx < naxis: if naxis > 1: return _SinglePoint(1, indx) elif naxis == 1: return _OnePointAxis(1, 0) else: raise IndexError('Index %s out of range.' % indx) elif isinstance(indx, slice): indx = _normalize_slice(indx, naxis) if (indx.start == 0) and (indx.stop == naxis) and (indx.step == 1): return _WholeLine(naxis, 0) else: if indx.step == 1: return _LineSlice(indx.stop - indx.start, indx.start) else: return _SteppedSlice((indx.stop - indx.start) // indx.step, indx.start) else: raise IndexError('Illegal index %s' % indx)