En numpy, las arrays pueden tener tipos de datos que contienen campos, de forma análoga a las columnas en una hoja de cálculo. Un ejemplo es [(a, int), (b, float)]
, donde cada entrada en la array es un par de (int, float). Normalmente, se accede a estos atributos mediante búsquedas en diccionarios como arr['a'] and arr['b']
. Las arrays de registros permiten acceder a los campos como miembros de la array, utilizando arr.a and arr.b
.
numpy.recarray.nonzero()
La función se utiliza para obtener los índices de los elementos que no son cero en la array de registro. Devuelve una tupla de arrays, una para cada dimensión de arr, que contiene los índices de los elementos distintos de cero en esa dimensión.
Sintaxis:
numpy.recarray.nonzero()
Parámetros: Ninguno
Devuelve: [tuple_of_arrays] Índices de elementos que no son cero.
Código #1:
# Python program explaining # numpy.recarray.nonzero() method # importing numpy as geek import numpy as geek # creating input array with 2 different field in_arr = geek.array([[(0.0, 2), (3.0, -4), (0.0, 9)], [(9.0, 1), (5.0, 0), (-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.nonzero methods # to float record array out_arr = rec_arr.a.nonzero() print ("Indices of non zero elements : ", out_arr) # applying recarray.nonzero methods # to int record array out_arr = rec_arr.b.nonzero() print ("Indices of non zero elements : ", out_arr)
Array de entrada: [[( 0., 2) ( 3., -4) ( 0., 9)]
[( 9., 1) ( 5., 0) (-12., -7)]]
Array de registros of float: [[ 0. 3. 0.]
[ 9. 5. -12.]]
Array de registros de int: [[ 2 -4 9]
[ 1 0 -7]]
Índices de elementos distintos de cero : (array( [0, 1, 1, 1], dtype=int64), array([1, 0, 1, 2], dtype=int64))
Índices de elementos distintos de cero: (array([0, 0, 0, 1, 1], dtipo=int64), array([0, 1, 2, 0, 2], dtipo=int64))
Código #2:
Estamos aplicando numpy.recarray.nonzero()
a toda la array de registros.
# Python program explaining # numpy.recarray.nonzero() 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.nonzero methods to record array out_arr = rec_arr.nonzero() print ("Output array : ", out_arr)
Array de entrada: [[( 5., 2) ( 3., 4) ( 6., -7)]
[( 9., 1) ( 6., 4) (-2., -7)]]
Array de salida : (array([0, 0, 0, 1, 1, 1], dtipo=int64), array([0, 1, 2, 0, 1, 2], dtipo=int64))
Publicación traducida automáticamente
Artículo escrito por jana_sayantan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA