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 :
# Python program explaining # numpy.recarray.partition() method # importing numpy as geek import numpy as geek # creating input array with 2 different field 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) # convert it to a record array, # using arr.view(np.recarray) rec_arr = in_arr.view(geek.recarray) print ( "Record array of float: " , rec_arr.a) print ( "Record array of int: " , rec_arr.b) # applying recarray.partition methods # to float record array rec_arr.a.partition(kth = 3 ) print ( "Output partitioned float array : " , rec_arr.a) # applying recarray.partition methods # to int record array rec_arr.b.partition(kth = 4 ) print ( "Output partitioned int array : " , rec_arr.b) |
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.
# Python program explaining # numpy.recarray.partition() method # importing numpy as geek import numpy as geek # creating input array with 2 different field 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) # convert it to a record array, # using arr.view(np.recarray) rec_arr = in_arr.view(geek.recarray) # applying recarray.partition methods to record array rec_arr.partition(kth = 2 ) print ( "Output array : " , rec_arr) |
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)]]