#NEWLINE# def isel( self , **indexers ) : #NEWLINE# #INDENT# "Return a new array indexed along the specified dimension(s).\n\n        Parameters\n        ----------\n        **indexers : {dim: indexer, ...}\n            Keyword arguments with names matching dimensions and values given\n            by integers, slice objects or arrays.\n\n        Returns\n        -------\n        obj : Array object\n            A new Array with the selected data and dimensions. In general,\n            the new variable's data will be a view of this variable's data,\n            unless numpy fancy indexing was triggered by using an array\n            indexer, in which case the data will be a copy.\n        " #NEWLINE# invalid = [ k for k in indexers if ( k not in self . dims ) ] #NEWLINE# if invalid : #NEWLINE# #INDENT# raise ValueError ( ( 'dimensions %r do not exist' % invalid ) ) #NEWLINE# #UNINDENT# key = ( [ slice ( None ) ] * self . ndim ) #NEWLINE# for ( i , dim ) in enumerate ( self . dims ) : #NEWLINE# #INDENT# if ( dim in indexers ) : #NEWLINE# #INDENT# key [ i ] = indexers [ dim ] #NEWLINE# #UNINDENT# #UNINDENT# return self [ tuple ( key ) ]