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})
Parameter | Erläuterung | Datentyp |
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:
(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. 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. Verwenden Sie einen Lambda-Ausdruck, um alle Datensätze zu erfassen, die aufgrund von NULL-Werten übersprungen werden. 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.
Mask None values in integer fields with different values using a dictionary.
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 |
Datentyp | Erläuterung |
NumPyArray | Ein strukturiertes NumPy-Array. |
Codebeispiel
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())
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])))