radis.misc.arrays module¶
Description¶
Functions to deal with numpy arrays:
- anynan(a)[source]¶
Returns whether
ahas at least onenanFastest implementation for arrays with >10^4 elements https://stackoverflow.com/a/45011547/5622825
- arange_len(wmin, wmax, wstep) int[source]¶
Returns len of a
numpy.arange()(wmin, max, wstep)array, accounting for floating point errorsNote:
numpy.arange()is useful to maintain the inputwstep. If you don’t have this requirement, you better usenumpy.linspace()directly.
- array_allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=True)[source]¶
Returns whether a and b are all close (element wise). If not the same size, returns False (instead of crashing like the numpy version). Cf numpy.allclose docs for more information.
- Parameters:
a, b (arrays)
rtol (float)
atol (float)
equal_nan (bool) – whether to consider NaN’s as equal. Contrary to the numpy version this one is set to True by default
- autoturn(data, key=-1)[source]¶
Turns array data. key value:
0don’t transpose1: transpose-1: auto : make sure the vectors are along the longest dimension
- bining(I, ymin=None, ymax=None, axis=1)[source]¶
Averages a I multi-dimensional array (typically an image) along the y axis bining(I) corresponds to I.mean(axis=1) NaN are not taken into account.
- Parameters:
I (numpy array) – intensity
ymin (int [0-I.shape[1]]) – If None, 0 is used. Default
None.ymax (int [0-I.shape[1]]) – If None, I.shape[1] is used. Default
None.axis (int) – Default 1
- boolean_array_from_ranges(ranges, n)[source]¶
return a boolean array of length
nwhere (L[i][0],L[i][1]) give the ranges set toTrueExamples
L = np.array([[2,4], [5,6], [7,8]]) boolean_array_from_coordinates(*L.T, 8) >>> np.array([0, 0, 1, 1, 0, 1, 0, 1], dtype=bool)
- calc_diff(t1, v1, t2, v2)[source]¶
Subtract two vectors that may have slightly offset abscissa interpolating the correct values.
- Parameters:
t1, v1 (array_like) – first vector and its abscissa
t2, v2 (array_like) – second vector and its abscissa
- Returns:
tdiff, vdiff – subtracted vector and its abscissa
- Return type:
array_like
- centered_diff(w)[source]¶
Return w[i+1]-w[i-1]/2, same size as w.
Similar to
numpy.diff(), but does not change the array size.
- evenly_distributed(w, atolerance=1e-05)[source]¶
Make sure array
wis evenly distributed.- Parameters:
w (numpy array) – array to test
atolerance (float) – absolute tolerance
- Returns:
out –
TrueorFalseifwis evenly distributed.- Return type:
bool
See also
- evenly_distributed_fast(w, rtolerance=1e-05)[source]¶
Make sure array
wis evenly distributed, by looking only at the first and last steps. i.e:w[-1] - w[-2] == w[1] - w[0]
- Parameters:
w (numpy array) – array to test
rtolerance (float) – relative tolerance
- Returns:
out –
TrueorFalseifwis evenly distributed.- Return type:
bool
See also
- find_first(arr, threshold)[source]¶
Return the index of the first element of the array arr whose value is more than the threshold.
- find_nearest(array, searched, return_bool=False)[source]¶
Return the closest elements in array for each element in ‘searched’ array. In case of multiple elements in
arrayhaving equal difference withsearchedelement, one with least index is returned. Also returns a boolean array with indices of elements occurring in output list set to true.Examples
from numpy import array find_nearest(array([1,2,3,4]), array([2.1,2]), True) >>> (array([2, 2]), array([False, True, False, False])) find_nearest(np.array([1,2,3,4]), np.array([2.6,2]), True) >>> (array([3, 2]), array([False, True, True, False])) find_nearest(np.array([1, 3]), np.array([2])) >>> array([1]) find_nearest(np.array([3, 1]), np.array([2])) >>> array([3])
- first_nonnan_index(a)[source]¶
Returns index of first non-nan value in
aReturns None is all values are
nanSee also
- is_sorted(a)[source]¶
Returns whether
ais sorted in ascending order.From B.M. answer on StackOverflow: https://stackoverflow.com/a/47004533/5622825
See also
- last_nonnan_index(a)[source]¶
Returns index of first non-nan value in
aReturns None is all values are
nanSee also
- logspace(xmin, xmax, npoints)[source]¶
Returns points from xmin to xmax regularly distributed on a logarithm space.
Numpy’s
numpy.logspace()does the same from 10**xmin to 10**xmax
- nantrapz(I, w, dx=1.0, axis=-1)[source]¶
Returns
trapezoid()(I, w) discarding nan.
- non_zero_ranges_in_array(b)[source]¶
return a list of coordinates corresponding to non-zero values in boolean array
b- Parameters:
b (boolean array)
Examples
b = np.array([0,0,1,1,0,1,0,1], dtype=bool) non_zero_ranges_in_array(b) >> ([2, 5, 7], [4, 6, 8])
- non_zero_values_around(a, n)[source]¶
return a boolean array of same size as
awhere each positioniisTrueif there are non-zero points less thannindex position away froma[i], andFalseif all points inaare 0nindex position away froma[i]
- norm(a, normby=None, how='max')[source]¶
Normalize a numpy array with its maximum. Or normalize it with another vector. Works if array contains nans.
- Parameters:
normby (array, or None) – if array, norm with this other array’s maximum. If None, normalize with its maximum.
- norm_on(a, w, wmin=None, wmax=None, how='max')[source]¶
Normalize
aon a specific range ofw- Parameters:
a (array) – array
w (array) – x-axis array
- Other Parameters:
wmin, wmax (float) – crop range
how (‘mean’, ‘max’) – how to normalize
- Returns:
a_norm – normalized array
- Return type:
array
- numpy_add_at(LDM, k, l, m, I)[source]¶
Add the linestrengths on the LDM grid.
Uses the numpy implementation of
at(), which add arguments element-wise.- Parameters:
LDM (ndarray) – LDM grid
k, l, m (array) – index
I (array) – intensity to add
- Returns:
add – linestrengths distributed over the LDM grid
- Return type:
ndarray
Notes
Cython version implemented in https://github.com/radis/radis/pull/234
See also
numpy.add.at()