Python numpy.partition() Examples
The following are 30 code examples for showing how to use numpy.partition(). 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: recruit Author: Frank-qlu File: test_shape_base.py License: Apache License 2.0 | 6 votes |
def test_argequivalent(self): """ Test it translates from arg<func> to <func> """ from numpy.random import rand a = rand(3, 4, 5) funcs = [ (np.sort, np.argsort, dict()), (_add_keepdims(np.min), _add_keepdims(np.argmin), dict()), (_add_keepdims(np.max), _add_keepdims(np.argmax), dict()), (np.partition, np.argpartition, dict(kth=2)), ] for func, argfunc, kwargs in funcs: for axis in list(range(a.ndim)) + [None]: a_func = func(a, axis=axis, **kwargs) ai_func = argfunc(a, axis=axis, **kwargs) assert_equal(a_func, take_along_axis(a, ai_func, axis=axis))
Example 2
Project: libact Author: ntucllab File: uncertainty_sampling.py License: BSD 2-Clause "Simplified" License | 6 votes |
def _get_scores(self): dataset = self.dataset self.model.train(dataset) unlabeled_entry_ids, X_pool = dataset.get_unlabeled_entries() if isinstance(self.model, ProbabilisticModel): dvalue = self.model.predict_proba(X_pool) elif isinstance(self.model, ContinuousModel): dvalue = self.model.predict_real(X_pool) if self.method == 'lc': # least confident score = -np.max(dvalue, axis=1) elif self.method == 'sm': # smallest margin if np.shape(dvalue)[1] > 2: # Find 2 largest decision values dvalue = -(np.partition(-dvalue, 2, axis=1)[:, :2]) score = -np.abs(dvalue[:, 0] - dvalue[:, 1]) elif self.method == 'entropy': score = np.sum(-dvalue * np.log(dvalue), axis=1) return zip(unlabeled_entry_ids, score)
Example 3
Project: Computable Author: ktraunmueller File: test_multiarray.py License: MIT License | 6 votes |
def test_partition_cdtype(self): d = array([('Galahad', 1.7, 38), ('Arthur', 1.8, 41), ('Lancelot', 1.9, 38)], dtype=[('name', '|S10'), ('height', '<f8'), ('age', '<i4')]) tgt = np.sort(d, order=['age', 'height']) assert_array_equal(np.partition(d, range(d.size), order=['age', 'height']), tgt) assert_array_equal(d[np.argpartition(d, range(d.size), order=['age', 'height'])], tgt) for k in range(d.size): assert_equal(np.partition(d, k, order=['age', 'height'])[k], tgt[k]) assert_equal(d[np.argpartition(d, k, order=['age', 'height'])][k], tgt[k]) d = array(['Galahad', 'Arthur', 'zebra', 'Lancelot']) tgt = np.sort(d) assert_array_equal(np.partition(d, range(d.size)), tgt) for k in range(d.size): assert_equal(np.partition(d, k)[k], tgt[k]) assert_equal(d[np.argpartition(d, k)][k], tgt[k])
Example 4
Project: Mastering-Elasticsearch-7.0 Author: PacktPublishing File: test_shape_base.py License: MIT License | 6 votes |
def test_argequivalent(self): """ Test it translates from arg<func> to <func> """ from numpy.random import rand a = rand(3, 4, 5) funcs = [ (np.sort, np.argsort, dict()), (_add_keepdims(np.min), _add_keepdims(np.argmin), dict()), (_add_keepdims(np.max), _add_keepdims(np.argmax), dict()), (np.partition, np.argpartition, dict(kth=2)), ] for func, argfunc, kwargs in funcs: for axis in list(range(a.ndim)) + [None]: a_func = func(a, axis=axis, **kwargs) ai_func = argfunc(a, axis=axis, **kwargs) assert_equal(a_func, take_along_axis(a, ai_func, axis=axis))
Example 5
Project: GraphicDesignPatternByPython Author: Relph1119 File: test_shape_base.py License: MIT License | 6 votes |
def test_argequivalent(self): """ Test it translates from arg<func> to <func> """ from numpy.random import rand a = rand(3, 4, 5) funcs = [ (np.sort, np.argsort, dict()), (_add_keepdims(np.min), _add_keepdims(np.argmin), dict()), (_add_keepdims(np.max), _add_keepdims(np.argmax), dict()), (np.partition, np.argpartition, dict(kth=2)), ] for func, argfunc, kwargs in funcs: for axis in list(range(a.ndim)) + [None]: a_func = func(a, axis=axis, **kwargs) ai_func = argfunc(a, axis=axis, **kwargs) assert_equal(a_func, take_along_axis(a, ai_func, axis=axis))
Example 6
Project: predictive-maintenance-using-machine-learning Author: awslabs File: test_shape_base.py License: Apache License 2.0 | 6 votes |
def test_argequivalent(self): """ Test it translates from arg<func> to <func> """ from numpy.random import rand a = rand(3, 4, 5) funcs = [ (np.sort, np.argsort, dict()), (_add_keepdims(np.min), _add_keepdims(np.argmin), dict()), (_add_keepdims(np.max), _add_keepdims(np.argmax), dict()), (np.partition, np.argpartition, dict(kth=2)), ] for func, argfunc, kwargs in funcs: for axis in list(range(a.ndim)) + [None]: a_func = func(a, axis=axis, **kwargs) ai_func = argfunc(a, axis=axis, **kwargs) assert_equal(a_func, take_along_axis(a, ai_func, axis=axis))
Example 7
Project: cupy Author: cupy File: sort.py License: MIT License | 6 votes |
def argpartition(a, kth, axis=-1): """Returns the indices that would partially sort an array. Args: a (cupy.ndarray): Array to be sorted. kth (int or sequence of ints): Element index to partition by. If supplied with a sequence of k-th it will partition all elements indexed by k-th of them into their sorted position at once. axis (int or None): Axis along which to sort. Default is -1, which means sort along the last axis. If None is supplied, the array is flattened before sorting. Returns: cupy.ndarray: Array of the same type and shape as ``a``. .. note:: For its implementation reason, `cupy.argpartition` fully sorts the given array as `cupy.argsort` does. It also does not support ``kind`` and ``order`` parameters that ``numpy.argpartition`` supports. .. seealso:: :func:`numpy.argpartition` """ return a.argpartition(kth, axis=axis)
Example 8
Project: pySINDy Author: luckystarufo File: test_shape_base.py License: MIT License | 6 votes |
def test_argequivalent(self): """ Test it translates from arg<func> to <func> """ from numpy.random import rand a = rand(3, 4, 5) funcs = [ (np.sort, np.argsort, dict()), (_add_keepdims(np.min), _add_keepdims(np.argmin), dict()), (_add_keepdims(np.max), _add_keepdims(np.argmax), dict()), (np.partition, np.argpartition, dict(kth=2)), ] for func, argfunc, kwargs in funcs: for axis in list(range(a.ndim)) + [None]: a_func = func(a, axis=axis, **kwargs) ai_func = argfunc(a, axis=axis, **kwargs) assert_equal(a_func, take_along_axis(a, ai_func, axis=axis))
Example 9
Project: mxnet-centernet Author: Guanghan File: center_detector.py License: MIT License | 6 votes |
def merge_outputs(self, detections): results = {} for i in range(1, self.num_classes + 1): results[i] = np.concatenate([detection[i] for detection in detections], axis=0).astype(np.float32) if len(self.scales) > 1 or self.opt.nms: soft_nms(results[i], Nt=0.5, method=2) scores = np.hstack([results[i][:,4] for i in range(1, self.num_classes + 1)]) if len(scores) > self.max_per_image: kth = len(scores) - self.max_per_image thresh = np.partition(scores, kth)[kth] for i in range(1, self.num_classes + 1): keep_inds = (results[i][:, 4] >= thresh) results[i] = results[i][keep_inds] return results
Example 10
Project: modAL Author: modAL-python File: uncertainty.py License: MIT License | 6 votes |
def _proba_margin(proba: np.ndarray) -> np.ndarray: """ Calculates the margin of the prediction probabilities. Args: proba: Prediction probabilities. Returns: Margin of the prediction probabilities. """ if proba.shape[1] == 1: return np.zeros(shape=len(proba)) part = np.partition(-proba, 1, axis=1) margin = - part[:, 0] + part[:, 1] return margin
Example 11
Project: modAL Author: modAL-python File: uncertainty.py License: MIT License | 6 votes |
def classifier_margin(classifier: BaseEstimator, X: modALinput, **predict_proba_kwargs) -> np.ndarray: """ Classification margin uncertainty of the classifier for the provided samples. This uncertainty measure takes the first and second most likely predictions and takes the difference of their probabilities, which is the margin. Args: classifier: The classifier for which the prediction margin is to be measured. X: The samples for which the prediction margin of classification is to be measured. **predict_proba_kwargs: Keyword arguments to be passed for the :meth:`predict_proba` of the classifier. Returns: Margin uncertainty, which is the difference of the probabilities of first and second most likely predictions. """ try: classwise_uncertainty = classifier.predict_proba(X, **predict_proba_kwargs) except NotFittedError: return np.zeros(shape=(X.shape[0], )) if classwise_uncertainty.shape[1] == 1: return np.zeros(shape=(classwise_uncertainty.shape[0],)) part = np.partition(-classwise_uncertainty, 1, axis=1) margin = - part[:, 0] + part[:, 1] return margin
Example 12
Project: ImageFusion Author: pfchai File: test_multiarray.py License: MIT License | 6 votes |
def test_partition_cdtype(self): d = array([('Galahad', 1.7, 38), ('Arthur', 1.8, 41), ('Lancelot', 1.9, 38)], dtype=[('name', '|S10'), ('height', '<f8'), ('age', '<i4')]) tgt = np.sort(d, order=['age', 'height']) assert_array_equal(np.partition(d, range(d.size), order=['age', 'height']), tgt) assert_array_equal(d[np.argpartition(d, range(d.size), order=['age', 'height'])], tgt) for k in range(d.size): assert_equal(np.partition(d, k, order=['age', 'height'])[k], tgt[k]) assert_equal(d[np.argpartition(d, k, order=['age', 'height'])][k], tgt[k]) d = array(['Galahad', 'Arthur', 'zebra', 'Lancelot']) tgt = np.sort(d) assert_array_equal(np.partition(d, range(d.size)), tgt) for k in range(d.size): assert_equal(np.partition(d, k)[k], tgt[k]) assert_equal(d[np.argpartition(d, k)][k], tgt[k])
Example 13
Project: CenterNet-CondInst Author: CaoWGG File: ctdet.py License: MIT License | 6 votes |
def merge_outputs(self, detections): results = {} for j in range(1, self.num_classes + 1): results[j] = np.concatenate( [detection[j] for detection in detections], axis=0).astype(np.float32) if len(self.scales) > 1 or self.opt.nms: soft_nms(results[j], Nt=0.5, method=2) scores = np.hstack( [results[j][:, 4] for j in range(1, self.num_classes + 1)]) if len(scores) > self.max_per_image: kth = len(scores) - self.max_per_image thresh = np.partition(scores, kth)[kth] for j in range(1, self.num_classes + 1): keep_inds = (results[j][:, 4] >= thresh) results[j] = results[j][keep_inds] return results
Example 14
Project: centerNet-deep-sort Author: kimyoon-young File: ctdet.py License: GNU General Public License v3.0 | 6 votes |
def merge_outputs(self, detections): results = {} for j in range(1, self.num_classes + 1): results[j] = np.concatenate( [detection[j] for detection in detections], axis=0).astype(np.float32) if len(self.scales) > 1 or self.opt.nms: soft_nms(results[j], Nt=0.5, method=2) scores = np.hstack( [results[j][:, 4] for j in range(1, self.num_classes + 1)]) if len(scores) > self.max_per_image: kth = len(scores) - self.max_per_image thresh = np.partition(scores, kth)[kth] for j in range(1, self.num_classes + 1): keep_inds = (results[j][:, 4] >= thresh) results[j] = results[j][keep_inds] return results
Example 15
Project: CenterNet Author: lizhe960118 File: matrix_center_head.py License: Apache License 2.0 | 6 votes |
def merge_outputs(detections, num_classes): # print(detections) results = {} max_per_image = 100 for j in range(1, num_classes + 1): results[j] = np.concatenate( [detection[j] for detection in detections], axis=0).astype(np.float32) # if len(self.scales) > 1 or self.opt.nms: results[j] = soft_nms(results[j], Nt=0.5, method=2, threshold=0.01) # print(results) scores = np.hstack([results[j][:, 4] for j in range(1, num_classes + 1)]) if len(scores) > max_per_image: kth = len(scores) - max_per_image thresh = np.partition(scores, kth)[kth] for j in range(1, num_classes + 1): keep_inds = (results[j][:, 4] >= thresh) results[j] = results[j][keep_inds] # print("after merge out\n", results) return results2coco_boxes(results, num_classes)
Example 16
Project: CenterNet Author: lizhe960118 File: center_head.py License: Apache License 2.0 | 6 votes |
def merge_outputs(detections, num_classes): # print(detections) results = {} max_per_image = 100 for j in range(1, num_classes + 1): results[j] = np.concatenate( [detection[j] for detection in detections], axis=0).astype(np.float32) # if len(self.scales) > 1 or self.opt.nms: results[j] = soft_nms(results[j], Nt=0.5, method=2, threshold=0.01) # print(results) scores = np.hstack([results[j][:, 4] for j in range(1, num_classes + 1)]) if len(scores) > max_per_image: kth = len(scores) - max_per_image thresh = np.partition(scores, kth)[kth] for j in range(1, num_classes + 1): keep_inds = (results[j][:, 4] >= thresh) results[j] = results[j][keep_inds] # print("after merge out\n", results) return results2coco_boxes(results, num_classes)
Example 17
Project: CenterNet Author: lizhe960118 File: weight_center_head.py License: Apache License 2.0 | 6 votes |
def merge_outputs(detections, num_classes): # print(detections) results = {} max_per_image = 100 for j in range(1, num_classes + 1): results[j] = np.concatenate( [detection[j] for detection in detections], axis=0).astype(np.float32) # if len(self.scales) > 1 or self.opt.nms: results[j] = soft_nms(results[j], Nt=0.5, method=2, threshold=0.01) # print(results) scores = np.hstack([results[j][:, 4] for j in range(1, num_classes + 1)]) if len(scores) > max_per_image: kth = len(scores) - max_per_image thresh = np.partition(scores, kth)[kth] for j in range(1, num_classes + 1): keep_inds = (results[j][:, 4] >= thresh) results[j] = results[j][keep_inds] # print("after merge out\n", results) return results2coco_boxes(results, num_classes)
Example 18
Project: CenterNet Author: lizhe960118 File: sr_center_head.py License: Apache License 2.0 | 6 votes |
def merge_outputs(detections, num_classes): # print(detections) results = {} max_per_image = 100 for j in range(1, num_classes + 1): results[j] = np.concatenate( [detection[j] for detection in detections], axis=0).astype(np.float32) # if len(self.scales) > 1 or self.opt.nms: results[j] = soft_nms(results[j], Nt=0.5, method=2, threshold=0.01) # print(results) scores = np.hstack([results[j][:, 4] for j in range(1, num_classes + 1)]) if len(scores) > max_per_image: kth = len(scores) - max_per_image thresh = np.partition(scores, kth)[kth] for j in range(1, num_classes + 1): keep_inds = (results[j][:, 4] >= thresh) results[j] = results[j][keep_inds] # print("after merge out\n", results) return results2coco_boxes(results, num_classes)
Example 19
Project: CenterNet Author: lizhe960118 File: ctdet_decetor.py License: Apache License 2.0 | 6 votes |
def merge_outputs(detections): # print(detections) results = {} max_per_image = 100 for j in range(1, num_classes + 1): results[j] = np.concatenate( [detection[j] for detection in detections], axis=0).astype(np.float32) # if len(self.scales) > 1 or self.opt.nms: results[j] = soft_nms(results[j], Nt=0.5, method=2, threshold=0.001) # print(results) scores = np.hstack( [results[j][:, 4] for j in range(1, num_classes + 1)]) if len(scores) > max_per_image: kth = len(scores) - max_per_image thresh = np.partition(scores, kth)[kth] for j in range(1, num_classes + 1): keep_inds = (results[j][:, 4] >= thresh) results[j] = results[j][keep_inds] # print("after merge out\n", results) return results2coco_boxes(results)
Example 20
Project: coffeegrindsize Author: jgagneastro File: test_shape_base.py License: MIT License | 6 votes |
def test_argequivalent(self): """ Test it translates from arg<func> to <func> """ from numpy.random import rand a = rand(3, 4, 5) funcs = [ (np.sort, np.argsort, dict()), (_add_keepdims(np.min), _add_keepdims(np.argmin), dict()), (_add_keepdims(np.max), _add_keepdims(np.argmax), dict()), (np.partition, np.argpartition, dict(kth=2)), ] for func, argfunc, kwargs in funcs: for axis in list(range(a.ndim)) + [None]: a_func = func(a, axis=axis, **kwargs) ai_func = argfunc(a, axis=axis, **kwargs) assert_equal(a_func, take_along_axis(a, ai_func, axis=axis))
Example 21
Project: Serverless-Deep-Learning-with-TensorFlow-and-AWS-Lambda Author: PacktPublishing File: test_shape_base.py License: MIT License | 6 votes |
def test_argequivalent(self): """ Test it translates from arg<func> to <func> """ from numpy.random import rand a = rand(3, 4, 5) funcs = [ (np.sort, np.argsort, dict()), (_add_keepdims(np.min), _add_keepdims(np.argmin), dict()), (_add_keepdims(np.max), _add_keepdims(np.argmax), dict()), (np.partition, np.argpartition, dict(kth=2)), ] for func, argfunc, kwargs in funcs: for axis in list(range(a.ndim)) + [None]: a_func = func(a, axis=axis, **kwargs) ai_func = argfunc(a, axis=axis, **kwargs) assert_equal(a_func, take_along_axis(a, ai_func, axis=axis))
Example 22
Project: twitter-stock-recommendation Author: alvarobartt File: test_shape_base.py License: MIT License | 6 votes |
def test_argequivalent(self): """ Test it translates from arg<func> to <func> """ from numpy.random import rand a = rand(3, 4, 5) funcs = [ (np.sort, np.argsort, dict()), (_add_keepdims(np.min), _add_keepdims(np.argmin), dict()), (_add_keepdims(np.max), _add_keepdims(np.argmax), dict()), (np.partition, np.argpartition, dict(kth=2)), ] for func, argfunc, kwargs in funcs: for axis in list(range(a.ndim)) + [None]: a_func = func(a, axis=axis, **kwargs) ai_func = argfunc(a, axis=axis, **kwargs) assert_equal(a_func, take_along_axis(a, ai_func, axis=axis))
Example 23
Project: CenterNet Author: xingyizhou File: ctdet.py License: MIT License | 6 votes |
def merge_outputs(self, detections): results = {} for j in range(1, self.num_classes + 1): results[j] = np.concatenate( [detection[j] for detection in detections], axis=0).astype(np.float32) if len(self.scales) > 1 or self.opt.nms: soft_nms(results[j], Nt=0.5, method=2) scores = np.hstack( [results[j][:, 4] for j in range(1, self.num_classes + 1)]) if len(scores) > self.max_per_image: kth = len(scores) - self.max_per_image thresh = np.partition(scores, kth)[kth] for j in range(1, self.num_classes + 1): keep_inds = (results[j][:, 4] >= thresh) results[j] = results[j][keep_inds] return results
Example 24
Project: pytorch-segmentation-toolbox Author: speedinghzl File: loss.py License: MIT License | 5 votes |
def find_threshold(self, np_predict, np_target): # downsample 1/8 factor = self.factor predict = nd.zoom(np_predict, (1.0, 1.0, 1.0/factor, 1.0/factor), order=1) target = nd.zoom(np_target, (1.0, 1.0/factor, 1.0/factor), order=0) n, c, h, w = predict.shape min_kept = self.min_kept // (factor*factor) #int(self.min_kept_ratio * n * h * w) input_label = target.ravel().astype(np.int32) input_prob = np.rollaxis(predict, 1).reshape((c, -1)) valid_flag = input_label != self.ignore_label valid_inds = np.where(valid_flag)[0] label = input_label[valid_flag] num_valid = valid_flag.sum() if min_kept >= num_valid: threshold = 1.0 elif num_valid > 0: prob = input_prob[:,valid_flag] pred = prob[label, np.arange(len(label), dtype=np.int32)] threshold = self.thresh if min_kept > 0: k_th = min(len(pred), min_kept)-1 new_array = np.partition(pred, k_th) new_threshold = new_array[k_th] if new_threshold > self.thresh: threshold = new_threshold return threshold
Example 25
Project: recruit Author: Frank-qlu File: test_interaction.py License: Apache License 2.0 | 5 votes |
def test_partition_matrix_none(): # gh-4301 # 2018-04-29: moved here from core.tests.test_multiarray a = np.matrix([[2, 1, 0]]) actual = np.partition(a, 1, axis=None) expected = np.matrix([[0, 1, 2]]) assert_equal(actual, expected) assert_(type(expected) is np.matrix)
Example 26
Project: mars Author: mars-project File: test_base_execute.py License: Apache License 2.0 | 5 votes |
def testPartitionIndicesExecution(self): # only 1 chunk when axis = -1 raw = np.random.rand(100, 10) x = tensor(raw, chunk_size=10) kth = [2, 5, 9] r = partition(x, kth, return_index=True) pr, pi = self.executor.execute_tensors(r) np.testing.assert_array_equal(pr, np.take_along_axis(raw, pi, axis=-1)) np.testing.assert_array_equal(np.sort(raw)[:, kth], pr[:, kth]) x = tensor(raw, chunk_size=(22, 4)) r = partition(x, kth, return_index=True) pr, pi = self.executor.execute_tensors(r) np.testing.assert_array_equal(pr, np.take_along_axis(raw, pi, axis=-1)) np.testing.assert_array_equal(np.sort(raw)[:, kth], pr[:, kth]) raw = np.random.rand(100) x = tensor(raw, chunk_size=23) r = partition(x, kth, axis=0, return_index=True) pr, pi = self.executor.execute_tensors(r) np.testing.assert_array_equal(pr, np.take_along_axis(raw, pi, axis=-1)) np.testing.assert_array_equal(np.sort(raw)[kth], pr[kth])
Example 27
Project: CCNet Author: speedinghzl File: loss.py License: MIT License | 5 votes |
def find_threshold(self, np_predict, np_target): # downsample 1/8 factor = self.factor predict = nd.zoom(np_predict, (1.0, 1.0, 1.0/factor, 1.0/factor), order=1) target = nd.zoom(np_target, (1.0, 1.0/factor, 1.0/factor), order=0) n, c, h, w = predict.shape min_kept = self.min_kept // (factor*factor) #int(self.min_kept_ratio * n * h * w) input_label = target.ravel().astype(np.int32) input_prob = np.rollaxis(predict, 1).reshape((c, -1)) valid_flag = input_label != self.ignore_label valid_inds = np.where(valid_flag)[0] label = input_label[valid_flag] num_valid = valid_flag.sum() if min_kept >= num_valid: threshold = 1.0 elif num_valid > 0: prob = input_prob[:,valid_flag] pred = prob[label, np.arange(len(label), dtype=np.int32)] threshold = self.thresh if min_kept > 0: k_th = min(len(pred), min_kept)-1 new_array = np.partition(pred, k_th) new_threshold = new_array[k_th] if new_threshold > self.thresh: threshold = new_threshold return threshold
Example 28
Project: Mastering-Elasticsearch-7.0 Author: PacktPublishing File: test_interaction.py License: MIT License | 5 votes |
def test_partition_matrix_none(): # gh-4301 # 2018-04-29: moved here from core.tests.test_multiarray a = np.matrix([[2, 1, 0]]) actual = np.partition(a, 1, axis=None) expected = np.matrix([[0, 1, 2]]) assert_equal(actual, expected) assert_(type(expected) is np.matrix)
Example 29
Project: scanpy Author: theislab File: _qc.py License: BSD 3-Clause "New" or "Revised" License | 5 votes |
def top_proportions_sparse_csr(data, indptr, n): values = np.zeros((indptr.size - 1, n), dtype=np.float64) for i in numba.prange(indptr.size - 1): start, end = indptr[i], indptr[i + 1] vec = np.zeros(n, dtype=np.float64) if end - start <= n: vec[:end - start] = data[start:end] total = vec.sum() else: vec[:] = -(np.partition(-data[start:end], n - 1)[:n]) total = (data[start:end]).sum() # Is this not just vec.sum()? vec[::-1].sort() values[i, :] = vec.cumsum() / total return values
Example 30
Project: scanpy Author: theislab File: _qc.py License: BSD 3-Clause "New" or "Revised" License | 5 votes |
def top_segment_proportions_dense( mtx: Union[np.array, spmatrix], ns: Collection[int] ) -> np.ndarray: # Currently ns is considered to be 1 indexed ns = np.sort(ns) sums = mtx.sum(axis=1) partitioned = np.apply_along_axis(np.partition, 1, mtx, mtx.shape[1] - ns)[:, ::-1][:, :ns[-1]] values = np.zeros((mtx.shape[0], len(ns))) acc = np.zeros((mtx.shape[0])) prev = 0 for j, n in enumerate(ns): acc += partitioned[:, prev:n].sum(axis=1) values[:, j] = acc prev = n return values / sums[:, None]