Python numpy.median() Examples
The following are 30 code examples for showing how to use numpy.median(). These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example.
You may check out the related API usage on the sidebar.
You may also want to check out all available functions/classes of the module
numpy
, or try the search function
.
Example 1
Project: dustmaps Author: gregreen File: bayestar.py License: GNU General Public License v2.0 | 6 votes |
def _raise_on_mode(self, mode): """ Checks that the provided query mode is one of the accepted values. If not, raises a :obj:`ValueError`. """ valid_modes = [ 'random_sample', 'random_sample_per_pix', 'samples', 'median', 'mean', 'best', 'percentile'] if mode not in valid_modes: raise ValueError( '"{}" is not a valid `mode`. Valid modes are:\n' ' {}'.format(mode, valid_modes) )
Example 2
Project: mmdetection Author: open-mmlab File: dynamic_roi_head.py License: Apache License 2.0 | 6 votes |
def update_hyperparameters(self): """Update hyperparameters like IoU thresholds for assigner and beta for SmoothL1 loss based on the training statistics. Returns: tuple[float]: the updated ``iou_thr`` and ``beta``. """ new_iou_thr = max(self.train_cfg.dynamic_rcnn.initial_iou, np.mean(self.iou_history)) self.iou_history = [] self.bbox_assigner.pos_iou_thr = new_iou_thr self.bbox_assigner.neg_iou_thr = new_iou_thr self.bbox_assigner.min_pos_iou = new_iou_thr new_beta = min(self.train_cfg.dynamic_rcnn.initial_beta, np.median(self.beta_history)) self.beta_history = [] self.bbox_head.loss_bbox.beta = new_beta return new_iou_thr, new_beta
Example 3
Project: HorizonNet Author: sunset1995 File: post_proc.py License: MIT License | 6 votes |
def vote(vec, tol): vec = np.sort(vec) n = np.arange(len(vec))[::-1] n = n[:, None] - n[None, :] + 1.0 l = squareform(pdist(vec[:, None], 'minkowski', p=1) + 1e-9) invalid = (n < len(vec) * 0.4) | (l > tol) if (~invalid).sum() == 0 or len(vec) < tol: best_fit = np.median(vec) p_score = 0 else: l[invalid] = 1e5 n[invalid] = -1 score = n max_idx = score.argmax() max_row = max_idx // len(vec) max_col = max_idx % len(vec) assert max_col > max_row best_fit = vec[max_row:max_col+1].mean() p_score = (max_col - max_row + 1) / len(vec) l1_score = np.abs(vec - best_fit).mean() return best_fit, p_score, l1_score
Example 4
Project: NeuroKit Author: neuropsychology File: rsp_findpeaks.py License: MIT License | 6 votes |
def _rsp_findpeaks_outliers(rsp_cleaned, extrema, amplitude_min=0.3): # Only consider those extrema that have a minimum vertical distance to # their direct neighbor, i.e., define outliers in absolute amplitude # difference between neighboring extrema. vertical_diff = np.abs(np.diff(rsp_cleaned[extrema])) median_diff = np.median(vertical_diff) min_diff = np.where(vertical_diff > (median_diff * amplitude_min))[0] extrema = extrema[min_diff] # Make sure that the alternation of peaks and troughs is unbroken. If # alternation of sign in extdiffs is broken, remove the extrema that # cause the breaks. amplitudes = rsp_cleaned[extrema] extdiffs = np.sign(np.diff(amplitudes)) extdiffs = np.add(extdiffs[0:-1], extdiffs[1:]) removeext = np.where(extdiffs != 0)[0] + 1 extrema = np.delete(extrema, removeext) amplitudes = np.delete(amplitudes, removeext) return extrema, amplitudes
Example 5
Project: pyfilter Author: tingiskhan File: filters.py License: MIT License | 6 votes |
def test_ParallellFiltersAndStability(self): x, y = self.model.sample_path(50) shape = 3000 linear = AffineProcess((f, g), (1., 1.), self.norm, self.norm) self.model.hidden = linear filt = SISR(self.model, 1000).set_nparallel(shape).initialize().longfilter(y) filtermeans = filt.result.filter_means x = filtermeans[:, :1] mape = ((x - filtermeans[:, 1:]) / x).abs() assert mape.median(0)[0].max() < 0.05
Example 6
Project: pyfilter Author: tingiskhan File: filters.py License: MIT License | 6 votes |
def test_ParallelUnscented(self): x, y = self.model.sample_path(50) shape = 30 linear = AffineProcess((f, g), (1., 1.), self.norm, self.norm) self.model.hidden = linear filt = SISR(self.model, 1000, proposal=Unscented()).set_nparallel(shape).initialize().longfilter(y) filtermeans = filt.result.filter_means x = filtermeans[:, :1] mape = ((x - filtermeans[:, 1:]) / x).abs() assert mape.median(0)[0].max() < 0.05
Example 7
Project: me-ica Author: ME-ICA File: tedana.py License: GNU Lesser General Public License v2.1 | 6 votes |
def makeadmask(cdat,min=True,getsum=False): nx,ny,nz,Ne,nt = cdat.shape mask = np.ones((nx,ny,nz),dtype=np.bool) if min: mask = cdat[:,:,:,:,:].prod(axis=-1).prod(-1)!=0 return mask else: #Make a map of longest echo that a voxel can be sampled with, #with minimum value of map as X value of voxel that has median #value in the 1st echo. N.b. larger factor leads to bias to lower TEs emeans = cdat[:,:,:,:,:].mean(-1) medv = emeans[:,:,:,0] == stats.scoreatpercentile(emeans[:,:,:,0][emeans[:,:,:,0]!=0],33,interpolation_method='higher') lthrs = np.squeeze(np.array([ emeans[:,:,:,ee][medv]/3 for ee in range(Ne) ])) if len(lthrs.shape)==1: lthrs = np.atleast_2d(lthrs).T lthrs = lthrs[:,lthrs.sum(0).argmax()] mthr = np.ones([nx,ny,nz,ne]) for ee in range(Ne): mthr[:,:,:,ee]*=lthrs[ee] mthr = np.abs(emeans[:,:,:,:])>mthr masksum = np.array(mthr,dtype=np.int).sum(-1) mask = masksum!=0 if getsum: return mask,masksum else: return mask
Example 8
Project: kaggle-code Author: CNuge File: predict_spending_rough.py License: MIT License | 6 votes |
def fill_and_adj_numeric(df): #there are NA for page views, fill median for this == 1 df.pageviews.fillna(df.pageviews.median(), inplace = True) df.hits.fillna(df.hits.median(), inplace = True) df.visits.fillna(df.visits.median(), inplace = True) #are boolean, fill NaN with zeros, add to categorical df.isTrueDirect.fillna(0, inplace = True) df.bounces.fillna(0, inplace = True) df.newVisits.fillna(0, inplace = True) df.visitNumber.fillna(1, inplace = True) for col in ['isTrueDirect', 'bounces', 'newVisits']: df[col] = df[col].astype(int) return df
Example 9
Project: TGC-Designer-Tools Author: chadrockey File: offset_ui_tool.py License: Apache License 2.0 | 6 votes |
def drawNewLocation(ax, image_dict, result, image_scale, radio, sx, sy, event, ar): x_offset = 0.0 y_offset = 0.0 if sx is not None and sy is not None: x_offset = sx.val y_offset = sy.val vosm = np.copy(image_dict["Visible"]) vosm = OSMTGC.addOSMToImage(result.ways, vosm, pc, image_scale, x_offset, y_offset) image_dict["Visible Golf"] = vosm hosm = np.copy(image_dict["Heightmap"]).astype('float32') hosm = np.clip(hosm, 0.0, 3.5*np.median( hosm[ hosm >= 0.0 ])) # Limit outlier pixels hosm = hosm / np.max(hosm) hosm = cv2.cvtColor(hosm, cv2.COLOR_GRAY2RGB) hosm = OSMTGC.addOSMToImage(result.ways, hosm, pc, image_scale, x_offset, y_offset) image_dict["Heightmap Golf"] = hosm # Always set to Visible Golf after drawing new golf features ax.imshow(image_dict["Visible Golf"], origin='lower') radio.set_active(1)
Example 10
Project: vehicle_counting_tensorflow Author: ahmetozlu File: metrics.py License: MIT License | 6 votes |
def compute_median_rank_at_k(tp_fp_list, k): """Computes MedianRank@k, where k is the top-scoring labels. Args: tp_fp_list: a list of numpy arrays; each numpy array corresponds to the all detection on a single image, where the detections are sorted by score in descending order. Further, each numpy array element can have boolean or float values. True positive elements have either value >0.0 or True; any other value is considered false positive. k: number of top-scoring proposals to take. Returns: median_rank: median rank of all true positive proposals among top k by score. """ ranks = [] for i in range(len(tp_fp_list)): ranks.append( np.where(tp_fp_list[i][0:min(k, tp_fp_list[i].shape[0])] > 0)[0]) concatenated_ranks = np.concatenate(ranks) return np.median(concatenated_ranks)
Example 11
Project: decompose Author: bethgelab File: test_laplaceAlgorithms.py License: MIT License | 6 votes |
def test_laplace_sample(): """Test whether the mean and the variance of the samples are correct.""" mu = np.array([-1, 0., 1.]) beta = np.array([0.5, 1., 2.]) nSamples = 1000000 nParameters = mu.shape[0] parameters = {"mu": tf.constant(mu), "beta": tf.constant(beta)} tfNSamples = tf.constant(nSamples) r = LaplaceAlgorithms.sample(parameters=parameters, nSamples=tfNSamples) with tf.Session() as sess: r = sess.run(r) assert(r.shape == (nSamples, nParameters)) muHat = np.median(r, axis=0) assert(np.allclose(muHat, mu, atol=1e-1)) betaHat = np.sqrt(np.var(r, axis=0)/2.) assert(np.allclose(betaHat, beta, atol=1e-1))
Example 12
Project: yatsm Author: ceholden File: robust_fit.py License: MIT License | 6 votes |
def mad(resid, c=0.6745): """ Returns Median-Absolute-Deviation (MAD) for residuals Args: resid (np.ndarray): residuals c (float): scale factor to get to ~standard normal (default: 0.6745) (i.e. 1 / 0.75iCDF ~= 1.4826 = 1 / 0.6745) Returns: float: MAD 'robust' variance estimate Reference: http://en.wikipedia.org/wiki/Median_absolute_deviation """ # Return median absolute deviation adjusted sigma return np.median(np.fabs(resid - np.median(resid))) / c # UTILITY FUNCTIONS # np.any prevents nopython
Example 13
Project: keras-yolo3 Author: bing0037 File: kmeans.py License: MIT License | 6 votes |
def kmeans(self, boxes, k, dist=np.median): box_number = boxes.shape[0] distances = np.empty((box_number, k)) last_nearest = np.zeros((box_number,)) np.random.seed() clusters = boxes[np.random.choice( box_number, k, replace=False)] # init k clusters while True: distances = 1 - self.iou(boxes, clusters) current_nearest = np.argmin(distances, axis=1) if (last_nearest == current_nearest).all(): break # clusters won't change for cluster in range(k): clusters[cluster] = dist( # update clusters boxes[current_nearest == cluster], axis=0) last_nearest = current_nearest return clusters
Example 14
Project: HRV Author: pickus91 File: timeDomain.py License: MIT License | 6 votes |
def timeDomain(NN): L = len(NN) ANN = np.mean(NN) SDNN = np.std(NN) SDSD = np.std(np.diff(NN)) NN50 = len(np.where(np.diff(NN) > 0.05)[0]) pNN50 = NN50/L NN20 = len(np.where(np.diff(NN) > 0.02)[0]) pNN20 = NN20/L rMSSD = np.sqrt((1/L) * sum(np.diff(NN) ** 2)) MedianNN = np.median(NN) timeDomainFeats = {'ANN': ANN, 'SDNN': SDNN, 'SDSD': SDSD, 'NN50': NN50, 'pNN50': pNN50, 'NN20': NN20, 'pNN20': pNN20, 'rMSSD': rMSSD, 'MedianNN':MedianNN} return timeDomainFeats
Example 15
Project: recruit Author: Frank-qlu File: test_function_base.py License: Apache License 2.0 | 6 votes |
def test_axis_keyword(self): a3 = np.array([[2, 3], [0, 1], [6, 7], [4, 5]]) for a in [a3, np.random.randint(0, 100, size=(2, 3, 4))]: orig = a.copy() np.median(a, axis=None) for ax in range(a.ndim): np.median(a, axis=ax) assert_array_equal(a, orig) assert_allclose(np.median(a3, axis=0), [3, 4]) assert_allclose(np.median(a3.T, axis=1), [3, 4]) assert_allclose(np.median(a3), 3.5) assert_allclose(np.median(a3, axis=None), 3.5) assert_allclose(np.median(a3.T), 3.5)
Example 16
Project: recruit Author: Frank-qlu File: test_nanfunctions.py License: Apache License 2.0 | 6 votes |
def test_out(self): mat = np.random.rand(3, 3) nan_mat = np.insert(mat, [0, 2], np.nan, axis=1) resout = np.zeros(3) tgt = np.median(mat, axis=1) res = np.nanmedian(nan_mat, axis=1, out=resout) assert_almost_equal(res, resout) assert_almost_equal(res, tgt) # 0-d output: resout = np.zeros(()) tgt = np.median(mat, axis=None) res = np.nanmedian(nan_mat, axis=None, out=resout) assert_almost_equal(res, resout) assert_almost_equal(res, tgt) res = np.nanmedian(nan_mat, axis=(0, 1), out=resout) assert_almost_equal(res, resout) assert_almost_equal(res, tgt)
Example 17
Project: svviz Author: svviz File: insertsizes.py License: MIT License | 5 votes |
def removeOutliers(data, m = 10.): """ a method of trimming outliers from a list/array using outlier-safe methods of calculating the center and variance; only removes the upper tail, not the lower tail """ if len(data) < 2: return data data = numpy.array(data) d_abs = numpy.abs(data - numpy.median(data)) d = data - numpy.median(data) mdev = numpy.median(d_abs) s = d/mdev if mdev else 0. return data[s<m]
Example 18
Project: neural-fingerprinting Author: StephanZheng File: work_data.py License: BSD 3-Clause "New" or "Revised" License | 5 votes |
def compute_work_statistics(self): """Computes statistics from all work pieces stored in this class.""" result = {} for v in itervalues(self.work): submission_id = v['submission_id'] if submission_id not in result: result[submission_id] = { 'completed': 0, 'num_errors': 0, 'error_messages': set(), 'eval_times': [], 'min_eval_time': None, 'max_eval_time': None, 'mean_eval_time': None, 'median_eval_time': None, } if not v['is_completed']: continue result[submission_id]['completed'] += 1 if 'error' in v and v['error']: result[submission_id]['num_errors'] += 1 result[submission_id]['error_messages'].add(v['error']) else: result[submission_id]['eval_times'].append(float(v['elapsed_time'])) for v in itervalues(result): if v['eval_times']: v['min_eval_time'] = np.min(v['eval_times']) v['max_eval_time'] = np.max(v['eval_times']) v['mean_eval_time'] = np.mean(v['eval_times']) v['median_eval_time'] = np.median(v['eval_times']) return result
Example 19
Project: spleeter Author: deezer File: evaluate.py License: MIT License | 5 votes |
def _compile_metrics(metrics_output_directory): """ Compiles metrics from given directory and returns results as dict. :param metrics_output_directory: Directory to get metrics from. :returns: Compiled metrics as dict. """ songs = glob(join(metrics_output_directory, 'test/*.json')) index = pd.MultiIndex.from_tuples( product(_INSTRUMENTS, _METRICS), names=['instrument', 'metric']) pd.DataFrame([], index=['config1', 'config2'], columns=index) metrics = { instrument: {k: [] for k in _METRICS} for instrument in _INSTRUMENTS} for song in songs: with open(song, 'r') as stream: data = json.load(stream) for target in data['targets']: instrument = target['name'] for metric in _METRICS: sdr_med = np.median([ frame['metrics'][metric] for frame in target['frames'] if not np.isnan(frame['metrics'][metric])]) metrics[instrument][metric].append(sdr_med) return metrics
Example 20
Project: spleeter Author: deezer File: evaluate.py License: MIT License | 5 votes |
def entrypoint(arguments, params): """ Command entrypoint. :param arguments: Command line parsed argument as argparse.Namespace. :param params: Deserialized JSON configuration file provided in CLI args. """ # Parse and check musdb directory. musdb_root_directory = arguments.mus_dir if not exists(musdb_root_directory): raise IOError(f'musdb directory {musdb_root_directory} not found') # Separate musdb sources. audio_output_directory = _separate_evaluation_dataset( arguments, musdb_root_directory, params) # Compute metrics with musdb. metrics_output_directory = _compute_musdb_metrics( arguments, musdb_root_directory, audio_output_directory) # Compute and pretty print median metrics. metrics = _compile_metrics(metrics_output_directory) for instrument, metric in metrics.items(): get_logger().info('%s:', instrument) for metric, value in metric.items(): get_logger().info('%s: %s', metric, f'{np.median(value):.3f}') return metrics
Example 21
Project: NiBetaSeries Author: HBClab File: nilearn.py License: MIT License | 5 votes |
def is_outlier(points, thresh=3.5): """ Returns a boolean array with True if points are outliers and False otherwise. modified from nipype: https://github.com/nipy/nipype/blob/b62d80/nipype/algorithms/confounds.py#L1129 Parameters ---------- points: nparray an numobservations by numdimensions numpy array of observations thresh: float the modified z-score to use as a threshold. Observations with a modified z-score (based on the median absolute deviation) greater than this value will be classified as outliers. Returns ------- A bolean mask, of size numobservations-length array. .. note:: References Boris Iglewicz and David Hoaglin (1993), "Volume 16: How to Detect and Handle Outliers", The ASQC Basic References in Quality Control: Statistical Techniques, Edward F. Mykytka, Ph.D., Editor. """ import numpy as np if len(points.shape) == 1: points = points[:, None] median = np.median(points, axis=0) diff = np.sum((points - median)**2, axis=-1) diff = np.sqrt(diff) med_abs_deviation = np.median(diff) modified_z_score = 0.6745 * diff / med_abs_deviation return modified_z_score > thresh
Example 22
Project: DOTA_models Author: ringringyi File: nav_env.py License: Apache License 2.0 | 5 votes |
def _debug_save_hardness(self, seed): out_path = os.path.join(self.logdir, '{:s}_{:d}_hardness.png'.format(self.building_name, seed)) batch_size = 4000 rng = np.random.RandomState(0) start_node_ids, end_node_ids, dists, pred_maps, paths, hardnesss, gt_dists = \ rng_next_goal_rejection_sampling( None, batch_size, self.task.gtG, rng, self.task_params.max_dist, self.task_params.min_dist, self.task_params.max_dist, self.task.sampling_distribution, self.task.target_distribution, self.task.nodes, self.task_params.n_ori, self.task_params.step_size, self.task.distribution_bins, self.task.rejection_sampling_M) bins = self.task.distribution_bins n_bins = self.task.n_bins with plt.style.context('ggplot'): fig, axes = utils.subplot(plt, (1,2), (10,10)) ax = axes[0] _ = ax.hist(hardnesss, bins=bins, weights=np.ones_like(hardnesss)/len(hardnesss)) ax.plot(bins[:-1]+0.5/n_bins, self.task.target_distribution, 'g') ax.plot(bins[:-1]+0.5/n_bins, self.task.sampling_distribution, 'b') ax.grid('on') ax = axes[1] _ = ax.hist(gt_dists, bins=np.arange(self.task_params.max_dist+1)) ax.grid('on') ax.set_title('Mean: {:0.2f}, Median: {:0.2f}'.format(np.mean(gt_dists), np.median(gt_dists))) with fu.fopen(out_path, 'w') as f: fig.savefig(f, bbox_inches='tight', transparent=True, pad_inches=0)
Example 23
Project: OpenCV-Computer-Vision-Projects-with-Python Author: PacktPublishing File: chapter2.py License: MIT License | 5 votes |
def SegmentArm(self, frame): """ segments the arm region based on depth """ # find center (21x21 pixel) region of image frame centerHalf = 10 # half-width of 21 is 21/2-1 center = frame[self.imgHeight/2-centerHalf:self.imgHeight/2+centerHalf, self.imgWidth/2-centerHalf:self.imgWidth/2+centerHalf] # find median depth value of center region center = np.reshape(center, np.prod(center.shape)) medVal = np.median( np.reshape(center, np.prod(center.shape)) ) # try this instead: absDepthDev = 14 frame = np.where(abs(frame-medVal) <= absDepthDev, 128, 0).astype(np.uint8) # morphological kernel = np.ones((3,3), np.uint8) frame = cv2.morphologyEx(frame, cv2.MORPH_CLOSE, kernel) # connected component smallKernel = 3 frame[self.imgHeight/2-smallKernel:self.imgHeight/2+smallKernel, self.imgWidth/2-smallKernel:self.imgWidth/2+smallKernel] = 128 mask = np.zeros((self.imgHeight+2,self.imgWidth+2), np.uint8) flood = frame.copy() cv2.floodFill(flood, mask, (self.imgWidth/2,self.imgHeight/2), 255, flags=4|(255<<8)) ret,flooded = cv2.threshold(flood, 129, 255, cv2.THRESH_BINARY) return flooded
Example 24
Project: medicaldetectiontoolkit Author: MIC-DKFZ File: detection_unet.py License: Apache License 2.0 | 5 votes |
def forward(self, x): """ forward pass of network. :param x: input image. shape (b, c, y, x, (z)) :return: seg_logits: shape (b, n_classes, y, x, (z)) :return: out_box_coords: list over n_classes. elements are arrays(b, n_rois, (y1, x1, y2, x2, (z1), (z2))) :return: out_max_scores: list over n_classes. elements are arrays(b, n_rois) """ out_features = self.fpn(x)[0] seg_logits = self.conv_final(out_features) out_box_coords, out_max_scores = [], [] smax = F.softmax(seg_logits, dim=1).detach().cpu().data.numpy() for cl in range(1, len(self.cf.class_dict.keys()) + 1): max_scores = [[] for _ in range(x.shape[0])] hard_mask = np.copy(smax).argmax(1) hard_mask[hard_mask != cl] = 0 hard_mask[hard_mask == cl] = 1 # perform connected component analysis on argmaxed predictions, # draw boxes around components and return coordinates. box_coords, rois = get_coords(hard_mask, self.cf.n_roi_candidates, self.cf.dim) # for each object, choose the highest softmax score (in the respective class) # of all pixels in the component as object score. for bix, broi in enumerate(rois): for nix, nroi in enumerate(broi): component_score = np.max(smax[bix, cl][nroi > 0]) if self.cf.aggregation_operation == 'max' \ else np.median(smax[bix, cl][nroi > 0]) max_scores[bix].append(component_score) out_box_coords.append(box_coords) out_max_scores.append(max_scores) return seg_logits, out_box_coords, out_max_scores
Example 25
Project: pyshgp Author: erp12 File: population.py License: MIT License | 5 votes |
def median_error(self): """Median total error in the population.""" return np.median(self.all_total_errors())
Example 26
Project: pyshgp Author: erp12 File: selection.py License: MIT License | 5 votes |
def median_absolute_deviation(x: np.ndarray) -> np.float64: """Return the MAD. Parameters ---------- x : array-like, shape = (n,) Returns ------- mad : float """ return np.median(np.abs(x - np.median(x))).item()
Example 27
Project: differential-privacy-library Author: IBM File: test_LaplaceBoundedNoise.py License: MIT License | 5 votes |
def test_zero_median_prob(self): self.mech.set_sensitivity(1).set_epsilon_delta(1, 0.1) vals = [] for i in range(10000): vals.append(self.mech.randomise(0.5)) median = float(np.median(vals)) self.assertAlmostEqual(np.abs(median), 0.5, delta=0.1)
Example 28
Project: differential-privacy-library Author: IBM File: test_Uniform.py License: MIT License | 5 votes |
def test_zero_median_prob(self): self.mech.set_sensitivity(1).set_epsilon_delta(0, 0.2) vals = [] for i in range(10000): vals.append(self.mech.randomise(0)) median = float(np.median(vals)) self.assertAlmostEqual(np.abs(median), 0.0, delta=0.1)
Example 29
Project: differential-privacy-library Author: IBM File: test_GaussianAnalytic.py License: MIT License | 5 votes |
def test_zero_median_prob(self): self.mech.set_sensitivity(1).set_epsilon_delta(0.5, 0.1) vals = [] for i in range(20000): vals.append(self.mech.randomise(0.5)) median = float(np.median(vals)) self.assertAlmostEqual(np.abs(median), 0.5, delta=0.1)
Example 30
Project: differential-privacy-library Author: IBM File: test_GaussianDiscrete.py License: MIT License | 5 votes |
def test_zero_median_prob(self): self.mech.set_epsilon_delta(0.5, 0.1) vals = [] for i in range(10000): vals.append(self.mech.randomise(1)) median = float(np.median(vals)) self.assertAlmostEqual(np.abs(median), 1, delta=0.1)