Numpy recarray.partition() function | Python
Last Updated :
27 Sep, 2019
In numpy, arrays may have a data-types containing fields, analogous to columns in a spreadsheet. An example is [(a, int), (b, float)]
, where each entry in the array is a pair of (int, float). Normally, these attributes are accessed using dictionary lookups such as arr['a'] and arr['b']
. Record arrays allow the fields to be accessed as members of the array, using arr.a and arr.b
.
numpy.recarray.partition()
function rearranges the elements in the array in such a way that value of the element in kth position is in the position it would be in a sorted array. All elements smaller than the kth element are moved before this element and all equal or greater are moved behind it.
Syntax : numpy.recarray.argpartition(kth, axis=-1, kind='introselect', order=None)
Parameters:
kth : [int or sequence of ints ] Element index to partition by.The kth element value will be in its final sorted position and all smaller elements will be moved before it and all equal or greater elements behind it.
axis : [int or None] Axis along which to sort. If None, the array is flattened before sorting. The default is -1, which sorts along the last axis.
kind : Selection algorithm. Default is ‘introselect’.
order : [str or list of str] When arr is an array with fields defined, this argument specifies which fields to compare first, second, etc.
Return : [ndarray] Partitioned array of the same type and shape as arr.
Code #1 :
import numpy as geek
in_arr = geek.array([( 5.0 , 2 ), ( 3.0 , - 4 ), ( 6.0 , 9 ),
( 9.0 , 1 ), ( 5.0 , 4 ), ( - 12.0 , - 7 )],
dtype = [( 'a' , float ), ( 'b' , int )])
print ( "Input array : " , in_arr)
rec_arr = in_arr.view(geek.recarray)
print ( "Record array of float: " , rec_arr.a)
print ( "Record array of int: " , rec_arr.b)
rec_arr.a.partition(kth = 3 )
print ( "Output partitioned float array : " , rec_arr.a)
rec_arr.b.partition(kth = 4 )
print ( "Output partitioned int array : " , rec_arr.b)
|
Output:
Input array : [( 5., 2) ( 3., -4) ( 6., 9) ( 9., 1) ( 5., 4) (-12., -7)]
Record array of float: [ 5. 3. 6. 9. 5. -12.]
Record array of int: [ 2 -4 9 1 4 -7]
Output partitioned float array : [ 5. -12. 3. 5. 9. 6.]
Output partitioned int array : [ 1 -7 -4 2 4 9]
Code #2 :
We are applying numpy.recarray.partition()
to whole record array.
import numpy as geek
in_arr = geek.array([[( 5.0 , 2 ), ( 3.0 , 4 ), ( 6.0 , - 7 )],
[( 9.0 , 1 ), ( 6.0 , 4 ), ( - 2.0 , - 7 )]],
dtype = [( 'a' , float ), ( 'b' , int )])
print ( "Input array : " , in_arr)
rec_arr = in_arr.view(geek.recarray)
rec_arr.partition(kth = 2 )
print ( "Output array : " , rec_arr)
|
Output:
Input array : [[(5.0, 2) (3.0, 4) (6.0, -7)]
[(9.0, 1) (6.0, 4) (-2.0, -7)]]
Output array : [[(3.0, 4) (5.0, 2) (6.0, -7)]
[(-2.0, -7) (6.0, 4) (9.0, 1)]]
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...