TableToNumPyArray

Resumen

Convierte una tabla en una matriz estructurada NumPy.

Debate

NumPy is a fundamental package for scientific computing in Python, including support for a powerful N-dimensional array object. For more information, see Working with NumPy in ArcGIS.

Para convertir clases de entidad en una matriz NumPy, use la función FeatureClassToNumPyArray en su lugar.

Sintaxis

TableToNumPyArray (in_table, field_names, {where_clause}, {skip_nulls}, {null_value})
ParámetroExplicaciónTipo de datos
in_table

La clase de entidad, capa, tabla o vista de tabla.

String
field_names
[field_names,...]

Una lista (o tupla) de nombres de campo. Para un único campo, puede utilizar una cadena en lugar de una lista de cadenas.

Use un asterisco (*) en lugar de una lista de campos para acceder a todos los campos de la tabla de entrada (se excluyen los campos BLOB). Sin embargo, para un rendimiento más rápido y un orden de campo fiable, se recomienda que la lista de campos se acote a solo aquellos que se necesitan realmente.

Los campos ráster y BLOB no se admiten. Los objetos de geometría no se admiten con el token SHAPE@, pero se puede incluir información de geometría con otros tokens como SHAPE@XY (una tupla de las coordenadas del centroide de la entidad), SHAPE@AREA y SHAPE@LENGTH.

Es posible acceder a información adicional con tokens (como OID@) en lugar de nombres de campo:

  • OID@Returns the value of the ObjectID field.

(El valor predeterminado es *)

String
where_clause

Una expresión opcional que limita los registros que se devuelven. Para obtener más información sobre cláusulas WHERE y sentencias SQL, consulte Referencia de SQL para las expresiones de consulta utilizadas en ArcGIS.

(El valor predeterminado es "")

String
skip_nulls

Controle si se omiten los registros que utilizan valores nulos. Puede ser un booleano True o False, o una función Python o una expresión lambda.

Cuando se define como True, si alguno de los atributos del registro es nulo (incluida la geometría), el registro se omite. Con una configuración False, skip_nulls intenta utilizar todos los registros con independencia de los valores nulos. En una matriz NumPy, un valor nulo se representa como NaN (no es un número) para valores numéricos de punto flotante, pero no para enteros.

A continuación, se muestra un ejemplo de omisión de todos los registros que incluyen valores nulos.

import arcpy
array = arcpy.da.TableToNumPyArray(table, fields, skip_nulls=True)

Una función Python o expresión lambda se pueden utilizar para permitir un control más preciso, incluido el registro de valores de OID para todos los registros que incluyan un valor nulo. En los siguientes dos ejemplos, la función o expresión lambda se utiliza para identificar OID que incluyen registros nulos.

Use una función para capturar todos los registros que se omiten debido a los valores nulos.

import arcpy

def getnull(oid):
    nullRows.append(oid)
    return True

nullRows = list()
array = arcpy.da.TableToNumPyArray(table, fields, skip_nulls=getnull)
print(nullRows)

Use una expresión lambda para capturar todos los registros que se omiten debido a los valores nulos.

import arcpy
nullRows = list()
array = arcpy.da.TableToNumPyArray(
    table, fields, skip_nulls=lambda oid: nullRows.append(oid))
print(nullRows)

Nota:

En matrices NumPy, los valores nulos se representan en tipos flotantes como nan y en tipos de texto como None. Los tipos enteros no admiten el contepto de valores nulos.

(El valor predeterminado es False)

Variant
null_value

Los valores nulos se sustituyen de la entrada por un valor nuevo.

null_value se sustituye antes de evaluar skip_nulls.

Mask None values in integer fields with a -9999.

import arcpy
fields = ['field1', 'field2']
arcpy.da.TableToNumPyArray(table, fields, null_value=-9999)

Mask None values in integer fields with different values using a dictionary.

import arcpy
fields = ['field1', 'field2']
nullDict = {'field1':-999999, 'field2':-9999}
arcpy.da.TableToNumPyArray(table, fields, null_value=nullDict)
Precaución:

Proporcionar una máscara como -9999 permite que los campos de enteros contengan valores nulos para exportarlos a una matriz NumPy, pero tenga ciudado al utilizar estos valores en el análisis. Es posible que los valores estén sesgados sin querer por parte del valor introducido.

(El valor predeterminado es None)

Integer
Valor de retorno
Tipo de datosExplicación
NumPyArray

Una matriz estructurada NumPy.

Muestra de código

Ejemplo 1 de TableToNumPyArray

Convierta una tabla en una matriz NumPy y realice algunas estadísticas básicas con NumPy.

import arcpy
import numpy

input = "c:/data/usa.gdb/USA/counties"
arr = arcpy.da.TableToNumPyArray(input, ('STATE_NAME', 'POP1990', 'POP2000'))

# Sum the total population for 1990 and 2000
#
print(arr["POP1990"].sum())
print(arr["POP2000"].sum())

# Sum the population for the state of Minnesota
#
print(arr[arr['STATE_NAME'] == "Minnesota"]['POP2000'].sum())
Ejemplo 2 de TableToNumPyArray

Use TableToNumPyArray para determinar los coeficientes de correlación para dos campos.

import arcpy
import numpy

input = arcpy.GetParameterAsText(0)
field1 = arcpy.GetParameterAsText(1)
field2 = arcpy.GetParameterAsText(2)

arr = arcpy.da.TableToNumPyArray(input, (field1, field2))

# Print correlation coefficients for comparison of 2 field values
#               
print(numpy.corrcoef((arr[field1], arr[field2])))

Temas relacionados