TableToNumPyArray

Zusammenfassung

Konvertiert eine Tabelle in ein strukturiertes NumPy-Array.

Diskussion

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.

Um Feature-Classes in ein NumPy-Array zu konvertieren, verwenden Sie stattdessen die Funktion FeatureClassToNumPyArray.

Syntax

TableToNumPyArray (in_table, field_names, {where_clause}, {skip_nulls}, {null_value})
ParameterErläuterungDatentyp
in_table

Die Feature-Class, der Layer, die Tabelle oder die Tabellensicht

String
field_names
[field_names,...]

Eine Liste (oder ein Tupel) von Feldnamen. Für ein einzelnes Feld kann eine Zeichenfolge statt einer Zeichenfolgenliste verwendet werden.

Geben Sie anstelle einer Felderliste ein Sternchen (*) an, um auf alle Felder der Eingabetabelle zuzugreifen (BLOB-Felder werden ausgeschlossen). Um die Performance zu verbessern und eine zuverlässige Feldreihenfolge zu erzielen, wird jedoch empfohlen, die Liste der Felder lediglich auf die tatsächlich benötigten Felder zu beschränken.

Raster- und BLOB-Felder werden nicht unterstützt. Bei Verwendung des SHAPE@-Token werden Geometrieobjekte nicht unterstützt, jedoch können Geometrieinformationen mithilfe anderer Token, z. B. SHAPE@XY (Tupel der Koordinaten des Feature-Schwerpunktes), SHAPE@AREA und SHAPE@LENGTH, einbezogen werden.

Anstelle von Feldnamen kann auf zusätzliche Informationen auch über Token (z. B. OID@) zugegriffen werden:

  • OID@Returns the value of the ObjectID field.

(Der Standardwert ist *)

String
where_clause

Ein optionaler Ausdruck zur Begrenzung der zurückgegebenen Datensätze. Weitere Informationen zu WHERE-Klauseln und SQL-Anweisungen finden Sie unter SQL-Referenz für in ArcGIS verwendete Abfrageausdrücke.

(Der Standardwert ist "")

String
skip_nulls

Steuert, ob Datensätze mit NULL-Werten übersprungen werden. Es kann sich um den booleschen Wert True oder False, eine Python-Funktion oder einen lambda-Ausdruck handeln.

Wenn die Option auf True festgelegt ist und die Attribute eines Datensatzes NULL sind (einschließlich der Geometrie), wird der Datensatz übersprungen. Bei der Einstellung False versucht skip_nulls, unabhängig von NULL-Werten alle Datensätze zu verwenden. In einem NumPy-Array wird NULL für numerische Gleitkommawerte, nicht jedoch für ganze Zahlen, als NaN (Not a Number, keine Zahl) dargestellt.

Nachstehend finden Sie ein Beispiel für das Überspringen aller Datensätze, die einen NULL-Wert enthalten.

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

Mit einer Python-Funktion oder einem lambda-Ausdruck kann eine genauere Steuerung erreicht werden, z. B. um die OID-Werte aller Datensätze mit NULL-Wert zu protokollieren. In beiden nachfolgenden Beispielen wird der lambda-Ausdruck bzw. die Funktion dazu verwendet, OIDs mit NULL-Datensätzen zu ermitteln.

Verwenden Sie eine Funktion, um alle Datensätze zu erfassen, die aufgrund von NULL-Werten übersprungen werden.

import arcpy

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

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

Verwenden Sie einen Lambda-Ausdruck, um alle Datensätze zu erfassen, die aufgrund von NULL-Werten übersprungen werden.

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

Hinweis:

Bei NumPy-Arrays werden NULL-Werte in Float-Typen, z. B. nan, sowie in Texttypen, z. B. None, repräsentiert. Von Integer-Typen wird das Konzept von NULL-Werten nicht unterstützt.

(Der Standardwert ist False)

Variant
null_value

Ersetzt NULL-Werte aus der Eingabe durch einen neueren Wert.

null_value wird ersetzt, bevor skip_nulls ausgewertet wird.

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)
Vorsicht:

Bei Bereitstellung einer Maske wie -9999 können ganzzahlige Felder mit NULL-Werten in ein NumPy-Array exportiert werden. Bei Verwendung dieser Werte in Analysen ist jedoch Vorsicht angebracht. Die Ergebnisse können durch den einbezogenen Wert ungewollte Verzerrungen aufweisen.

(Der Standardwert ist None)

Integer
Rückgabewert
DatentypErläuterung
NumPyArray

Ein strukturiertes NumPy-Array.

Codebeispiel

TableToNumPyArray – Beispiel 1

Konvertieren Sie eine Tabelle in ein NumPy-Array, und führen Sie einige grundlegende Statistiken mit NumPy durch.

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())
TableToNumPyArray – Beispiel 2

Verwenden Sie "TableToNumPyArray", um Korrelationskoeffizienten für zwei Felder zu bestimmen.

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])))

Verwandte Themen