Función Numpy recarray.nonzero() | Python

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) 
Producción:

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)
Producción:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *