@@ -120,9 +120,9 @@ def __new__(cls, data, units='', dtype=None, copy=True):
120120 data = data .rescale (units )
121121 if isinstance (data , unit_registry ['UnitQuantity' ]):
122122 return 1 * data
123- return np .array (data , dtype = dtype , copy = copy , subok = True ).view (cls )
123+ return np .asanyarray (data , dtype = dtype ).view (cls )
124124
125- ret = np .array (data , dtype = dtype , copy = copy ).view (cls )
125+ ret = np .asarray (data , dtype = dtype ).view (cls )
126126 ret ._dimensionality .update (validate_dimensionality (units ))
127127 return ret
128128
@@ -210,15 +210,17 @@ def rescale(self, units=None, dtype=None):
210210 dtype = self .dtype
211211 if self .dimensionality == to_dims :
212212 return self .astype (dtype )
213- to_u = Quantity (1.0 , to_dims )
214- from_u = Quantity (1.0 , self .dimensionality )
213+ to_u = Quantity (1.0 , to_dims , dtype = dtype )
214+ from_u = Quantity (1.0 , self .dimensionality , dtype = dtype )
215215 try :
216216 cf = get_conversion_factor (from_u , to_u )
217217 except AssertionError :
218218 raise ValueError (
219219 'Unable to convert between units of "%s" and "%s"'
220220 % (from_u ._dimensionality , to_u ._dimensionality )
221221 )
222+ if np .dtype (dtype ).kind in 'fc' :
223+ cf = np .array (cf , dtype = dtype )
222224 new_magnitude = cf * self .magnitude
223225 dtype = np .result_type (dtype , new_magnitude )
224226 return Quantity (new_magnitude , to_u , dtype = dtype )
@@ -272,7 +274,7 @@ def __array_prepare__(self, obj, context=None):
272274 uf , objs , huh = context
273275 if uf .__name__ .startswith ('is' ):
274276 return obj
275- #print self, obj, res, uf, objs
277+
276278 try :
277279 res ._dimensionality = p_dict [uf ](* objs )
278280 except KeyError :
@@ -590,7 +592,7 @@ def nanargmax(self,axis=None, out=None):
590592
591593 @with_doc (np .ndarray .ptp )
592594 def ptp (self , axis = None , out = None ):
593- ret = self . magnitude . ptp (axis , None if out is None else out .magnitude )
595+ ret = np . ptp (self . magnitude , axis , None if out is None else out .magnitude )
594596 dim = self .dimensionality
595597 if out is None :
596598 return Quantity (ret , dim , copy = False )
0 commit comments