numpy_backend¶
-
class
pyhf.tensor.numpy_backend.
numpy_backend
(**kwargs)[source]¶ Bases:
object
NumPy backend for pyhf
Methods
-
astensor
(tensor_in, dtype='float')[source]¶ Convert to a NumPy array.
- Parameters
tensor_in (Number or Tensor) – Tensor object
- Returns
A multi-dimensional, fixed-size homogenous array.
- Return type
numpy.ndarray
-
clip
(tensor_in, min_value, max_value)[source]¶ Clips (limits) the tensor values to be within a specified min and max.
Example
>>> import pyhf >>> pyhf.set_backend(pyhf.tensor.numpy_backend()) >>> a = pyhf.tensorlib.astensor([-2, -1, 0, 1, 2]) >>> pyhf.tensorlib.clip(a, -1, 1) array([-1., -1., 0., 1., 1.])
- Parameters
tensor_in (tensor) – The input tensor object
min_value (scalar or tensor or None) – The minimum value to be cliped to
max_value (scalar or tensor or None) – The maximum value to be cliped to
- Returns
A clipped tensor
- Return type
NumPy ndarray
-
concatenate
(sequence, axis=0)[source]¶ Join a sequence of arrays along an existing axis.
- Parameters
sequence – sequence of tensors
axis – dimension along which to concatenate
- Returns
the concatenated tensor
- Return type
output
-
conditional
(predicate, true_callable, false_callable)[source]¶ Runs a callable conditional on the boolean value of the evaulation of a predicate
Example
>>> import pyhf >>> pyhf.set_backend(pyhf.tensor.numpy_backend()) >>> tensorlib = pyhf.tensorlib >>> a = tensorlib.astensor([4]) >>> b = tensorlib.astensor([5]) >>> tensorlib.conditional((a < b)[0], lambda: a + b, lambda: a - b) array([9.])
- Parameters
predicate (scalar) – The logical condition that determines which callable to evaluate
true_callable (callable) – The callable that is evaluated when the
predicate
evalutes totrue
false_callable (callable) – The callable that is evaluated when the
predicate
evalutes tofalse
- Returns
The output of the callable that was evaluated
- Return type
NumPy ndarray
-
einsum
(subscripts, *operands)[source]¶ Evaluates the Einstein summation convention on the operands.
Using the Einstein summation convention, many common multi-dimensional array operations can be represented in a simple fashion. This function provides a way to compute such summations. The best way to understand this function is to try the examples below, which show how many common NumPy functions can be implemented as calls to einsum.
- Parameters
subscripts – str, specifies the subscripts for summation
operands – list of array_like, these are the tensors for the operation
- Returns
the calculation based on the Einstein summation convention
- Return type
tensor
-
normal
(x, mu, sigma)[source]¶ The probability density function of the Normal distribution evaluated at
x
given parameters of mean ofmu
and standard deviation ofsigma
.Example
>>> import pyhf >>> pyhf.set_backend(pyhf.tensor.numpy_backend()) >>> pyhf.tensorlib.normal(0.5, 0., 1.) 0.3520653267642995 >>> values = pyhf.tensorlib.astensor([0.5, 2.0]) >>> means = pyhf.tensorlib.astensor([0., 2.3]) >>> sigmas = pyhf.tensorlib.astensor([1., 0.8]) >>> pyhf.tensorlib.normal(values, means, sigmas) array([0.35206533, 0.46481887])
- Parameters
x (tensor or float) – The value at which to evaluate the Normal distribution p.d.f.
mu (tensor or float) – The mean of the Normal distribution
sigma (tensor or float) – The standard deviation of the Normal distribution
- Returns
Value of Normal(x|mu, sigma)
- Return type
NumPy float
-
normal_cdf
(x, mu=0, sigma=1)[source]¶ The cumulative distribution function for the Normal distribution
Example
>>> import pyhf >>> pyhf.set_backend(pyhf.tensor.numpy_backend()) >>> pyhf.tensorlib.normal_cdf(0.8) 0.7881446014166034 >>> values = pyhf.tensorlib.astensor([0.8, 2.0]) >>> pyhf.tensorlib.normal_cdf(values) array([0.7881446 , 0.97724987])
- Parameters
x (tensor or float) – The observed value of the random variable to evaluate the CDF for
mu (tensor or float) – The mean of the Normal distribution
sigma (tensor or float) – The standard deviation of the Normal distribution
- Returns
The CDF
- Return type
NumPy float
-
normal_dist
(mu, sigma)[source]¶ The Normal distribution with mean
mu
and standard deviationsigma
.Example
>>> import pyhf >>> pyhf.set_backend(pyhf.tensor.numpy_backend()) >>> means = pyhf.tensorlib.astensor([5, 8]) >>> stds = pyhf.tensorlib.astensor([1, 0.5]) >>> values = pyhf.tensorlib.astensor([4, 9]) >>> normals = pyhf.tensorlib.normal_dist(means, stds) >>> normals.log_prob(values) array([-1.41893853, -2.22579135])
- Parameters
mu (tensor or float) – The mean of the Normal distribution
sigma (tensor or float) – The standard deviation of the Normal distribution
- Returns
The Normal distribution class
- Return type
Normal distribution
-
poisson
(n, lam)[source]¶ The continous approximation, using \(n! = \Gamma\left(n+1\right)\), to the probability mass function of the Poisson distribution evaluated at
n
given the parameterlam
.Example
>>> import pyhf >>> pyhf.set_backend(pyhf.tensor.numpy_backend()) >>> pyhf.tensorlib.poisson(5., 6.) 0.16062314104797995 >>> values = pyhf.tensorlib.astensor([5., 9.]) >>> rates = pyhf.tensorlib.astensor([6., 8.]) >>> pyhf.tensorlib.poisson(values, rates) array([0.16062314, 0.12407692])
- Parameters
n (tensor or float) – The value at which to evaluate the approximation to the Poisson distribution p.m.f. (the observed number of events)
lam (tensor or float) – The mean of the Poisson distribution p.m.f. (the expected number of events)
- Returns
Value of the continous approximation to Poisson(n|lam)
- Return type
NumPy float
-
poisson_dist
(rate)[source]¶ The Poisson distribution with rate parameter
rate
.Example
>>> import pyhf >>> pyhf.set_backend(pyhf.tensor.numpy_backend()) >>> rates = pyhf.tensorlib.astensor([5, 8]) >>> values = pyhf.tensorlib.astensor([4, 9]) >>> poissons = pyhf.tensorlib.poisson_dist(rates) >>> poissons.log_prob(values) array([-1.74030218, -2.0868536 ])
- Parameters
rate (tensor or float) – The mean of the Poisson distribution (the expected number of events)
- Returns
The Poisson distribution class
- Return type
Poisson distribution
-
simple_broadcast
(*args)[source]¶ Broadcast a sequence of 1 dimensional arrays.
Example
>>> import pyhf >>> pyhf.set_backend(pyhf.tensor.numpy_backend()) >>> pyhf.tensorlib.simple_broadcast( ... pyhf.tensorlib.astensor([1]), ... pyhf.tensorlib.astensor([2, 3, 4]), ... pyhf.tensorlib.astensor([5, 6, 7])) [array([1., 1., 1.]), array([2., 3., 4.]), array([5., 6., 7.])]
- Parameters
args (Array of Tensors) – Sequence of arrays
- Returns
The sequence broadcast together.
- Return type
list of Tensors
-
tile
(tensor_in, repeats)[source]¶ Repeat tensor data along a specific dimension
Example
>>> import pyhf >>> pyhf.set_backend(pyhf.tensor.numpy_backend()) >>> a = pyhf.tensorlib.astensor([[1.0], [2.0]]) >>> pyhf.tensorlib.tile(a, (1, 2)) array([[1., 1.], [2., 2.]])
- Parameters
tensor_in (Tensor) – The tensor to be repeated
repeats (Tensor) – The tuple of multipliers for each dimension
- Returns
The tensor with repeated axes
- Return type
NumPy ndarray
-