diff --git a/GPy/core/parameterization/observable_array.py b/GPy/core/parameterization/observable_array.py index a280d74f..5b8aa1cd 100644 --- a/GPy/core/parameterization/observable_array.py +++ b/GPy/core/parameterization/observable_array.py @@ -1,7 +1,7 @@ # Copyright (c) 2012, GPy authors (see AUTHORS.txt). # Licensed under the BSD 3-clause license (see LICENSE.txt) -__updated__ = '2014-04-15' +__updated__ = '2014-05-12' import numpy as np from parameter_core import Observable, Pickleable @@ -15,10 +15,10 @@ class ObsAr(np.ndarray, Pickleable, Observable): """ __array_priority__ = -1 # Never give back ObsAr def __new__(cls, input_array, *a, **kw): + # allways make a copy of input paramters, as we need it to be in C order: if not isinstance(input_array, ObsAr): - obj = np.atleast_1d(np.require(input_array, dtype=np.float64, requirements=['W', 'C'])).view(cls) + obj = np.atleast_1d(np.require(np.copy(input_array), dtype=np.float64, requirements=['W', 'C'])).view(cls) else: obj = input_array - #cls.__name__ = "ObsAr" # because of fixed printing of `array` in np printing super(ObsAr, obj).__init__(*a, **kw) return obj diff --git a/GPy/core/parameterization/param.py b/GPy/core/parameterization/param.py index 1c67b9d9..3ccbd169 100644 --- a/GPy/core/parameterization/param.py +++ b/GPy/core/parameterization/param.py @@ -45,7 +45,6 @@ class Param(OptimizationHandlable, ObsAr): _parameters_ = [] def __new__(cls, name, input_array, default_constraint=None): obj = numpy.atleast_1d(super(Param, cls).__new__(cls, input_array=input_array)) - cls.__name__ = "Param" obj._current_slice_ = (slice(obj.shape[0]),) obj._realshape_ = obj.shape obj._realsize_ = obj.size @@ -112,8 +111,8 @@ class Param(OptimizationHandlable, ObsAr): def __getitem__(self, s, *args, **kwargs): if not isinstance(s, tuple): s = (s,) - if not reduce(lambda a, b: a or numpy.any(b is Ellipsis), s, False) and len(s) <= self.ndim: - s += (Ellipsis,) + #if not reduce(lambda a, b: a or numpy.any(b is Ellipsis), s, False) and len(s) <= self.ndim: + # s += (Ellipsis,) new_arr = super(Param, self).__getitem__(s, *args, **kwargs) try: new_arr._current_slice_ = s; new_arr._original_ = self.base is new_arr.base except AttributeError: pass # returning 0d array or float, double etc