Scheduled maintenance on Monday 2019-06-24 between 10:00-11:00 CEST

Commit c6aa285b authored by Martin Reinecke's avatar Martin Reinecke

Merge branch 'nifty2go' into fun_with_operators

parents f3a3a97a 7c69cf19
Pipeline #25253 passed with stage
in 9 minutes and 35 seconds
......@@ -32,6 +32,16 @@ class Random(object):
@staticmethod
def normal(dtype, shape, mean=0., std=1.):
if not (np.issubdtype(dtype, np.floating) or
np.issubdtype(dtype, np.complexfloating)):
raise TypeError("dtype must be float or complex")
if not np.isscalar(mean) or not np.isscalar(std):
raise TypeError("mean and std must be scalars")
if np.issubdtype(type(std), np.complexfloating):
raise TypeError("std must not be complex")
if ((not np.issubdtype(dtype, np.complexfloating)) and
np.issubdtype(type(mean), np.complexfloating)):
raise TypeError("mean must not be complex for a real result field")
if np.issubdtype(dtype, np.complexfloating):
x = np.empty(shape, dtype=dtype)
x.real = np.random.normal(mean.real, std*np.sqrt(0.5), shape)
......@@ -42,12 +52,20 @@ class Random(object):
@staticmethod
def uniform(dtype, shape, low=0., high=1.):
if not np.isscalar(low) or not np.isscalar(high):
raise TypeError("low and high must be scalars")
if (np.issubdtype(type(low), np.complexfloating) or
np.issubdtype(type(high), np.complexfloating)):
raise TypeError("low and high must not be complex")
if np.issubdtype(dtype, np.complexfloating):
x = np.empty(shape, dtype=dtype)
x.real = np.random.uniform(low, high, shape)
x.imag = np.random.uniform(low, high, shape)
elif np.issubdtype(dtype, np.integer):
x = np.random.random.randint(low, high+1, shape)
if not (np.issubdtype(type(low), np.integer) and
np.issubdtype(type(high), np.integer)):
raise TypeError("low and high must be integer")
x = np.random.randint(low, high+1, shape)
else:
x = np.random.uniform(low, high, shape)
return x.astype(dtype, copy=False)
......@@ -427,13 +427,19 @@ class Field(object):
return self._contraction_helper('max', spaces)
def mean(self, spaces=None):
return self._contraction_helper('mean', spaces)
if self.scalar_weight(spaces) is not None:
return self._contraction_helper('mean', spaces)
raise NotImplementedError
def var(self, spaces=None):
return self._contraction_helper('var', spaces)
if self.scalar_weight(spaces) is not None:
return self._contraction_helper('var', spaces)
raise NotImplementedError
def std(self, spaces=None):
return self._contraction_helper('std', spaces)
if self.scalar_weight(spaces) is not None:
return self._contraction_helper('std', spaces)
return sqrt(self.var(spaces))
def copy_content_from(self, other):
if not isinstance(other, Field):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment