TableToNumPyArray

Zusammenfassung

Konvertiert eine Tabelle in ein strukturiertes NumPy-Array.

Auswertung

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})
ParameterErklärungDatentyp
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.

Verwenden Sie ein Sternchen (*) statt einer Liste von Feldern, wenn Sie über die Eingabetabelle auf alle Felder zugreifen möchten (Raster- und BLOB-Felder sind ausgenommen). 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. Geometrieobjekte werden mit dem Token SHAPE@ nicht unterstützt. Geometrieinformationen können jedoch unter Verwendung anderer Token, beispielsweise SHAPE@XY (Tupel der Schwerpunktkoordinaten des Features), SHAPE@AREA und SHAPE@LENGTH einbezogen werden.

Der Zugriff auf zusätzliche Informationen kann mit Token (z. B. OID@) statt Feldnamen erfolgen:

  • 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 Abfrageausdrücken verwendete Elemente.

(Der Standardwert ist "")

String
skip_nulls

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

Ist True festgelegt, wird der Datensatz übersprungen, wenn eines der Attribute des Datensatzes (einschließlich "geometry") NULL ist. Bei der Einstellung False wird mit skip_nulls versucht, alle Datensätze ohne Berücksichtigung von NULL-Werten 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)

Eine Python-Funktion oder ein lambda-Ausdruck kann zur genaueren Steuerung verwendet werden, u. a. zum Protokollieren der OID-Werte aller Datensätze, die einen NULL-Wert enthalten. In den beiden folgenden Beispielen wird der lambda-Ausdruck oder eine Funktion zum Identifizieren von OIDs mit NULL-Datensätzen verwendet.

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:

In NumPy-Arrays werden NULL-Werte in Float-Typen wie nan und in Texttypen wie None dargestellt. 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
DatentypErklärung
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