TableToNumPyArray

Краткая информация

Конвертирует таблицу в структурированный массив NumPy.

Обсуждение

NumPy – это основной пакет для экспоненциальных вычислений в Python с поддержкой мощных n-размерных объектов типа массив (array). Подробнее см. в разделе Работа с NumPy в ArcGIS.

Для конвертации классов пространственных объектов в массив NumPy следует использовать функцию FeatureClassToNumPyArray.

Синтаксис

TableToNumPyArray (in_table, field_names, {where_clause}, {skip_nulls}, {null_value})
ПараметрОписаниеТип данных
in_table

Входной класс объектов, слой, таблица или табличное представление.

String
field_names
[field_names,...]

Список (или кортеж) имен полей. Для одного поля можно использовать строку вместо списка строк.

Используйте звездочку (*) вместо списка полей для доступа ко всем полям из входной таблицы (растровые и BLOB-поля исключены). Однако для повышения производительности и улучшения надежности порядка полей рекомендуется сузить список полей до реально необходимых полей.

Поля растра и типа BLOB не поддерживаются. Объекты геометрии не поддерживаются при использовании токена SHAPE@, но информация о геометрии может быть включена при использовании других токенов, таких как SHAPE@XY (кортеж координат центроида объекта), SHAPE@AREA и SHAPE@LENGTH.

Доступ к дополнительной информации можно получить, используя токены (такие как OID@) вместо имен полей:

  • OID@Возвращает значение поля ObjectID.

(Значение по умолчанию — *)

String
where_clause

Возвращается дополнительное выражение, которое ограничивает записи. Более подробно о выражении WHERE и о условиях SQL см. в разделе Справочник по SQL для выражений запросов, применяемых в ArcGIS.

(Значение по умолчанию — "")

String
skip_nulls

Управляет тем, пропускаются ли записи со значениями NULL. Это может быть логическое значение True или False, функция Python или выражение lambda.

Если задано значение True, запись пропускается, если какой-либо из атрибутов записи (в том числе геометрия) имеет значение null. При значении False, skip_nulls пытается использовать все записи, вне зависимости от значений null. В массиве NumPy отсутствие значений представляется как nan (not a number – не число) для числовых значений с плавающей точкой, но не для целых чисел.

Ниже приведен пример пропуска всех записей с NULL.

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

Функцию Python и выражение lambda можно использовать для более детального управления, например, записи в журнал значений OID всех записей с NULL. В обоих примерах ниже, выражение lambda или функция используются для определения OID с записями null.

Используйте функцию для получения всех записей, пропущенных из-за NULL.

import arcpy

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

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

Используйте лямбда-выражения для получения всех записей, пропущенных из-за NULL.

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

Примечание:

В массивах NumPy строки с null представляются в типах с плавающей запятой, как nan, а в текстовых типах – как None. Целочисленные типы не поддерживают концепцию NULL.

(Значение по умолчанию — False)

Variant
null_value

Заменяет NULL из входных данных на новое значение.

null_value заменяется до вычисления skip_nulls.

Наложите на значения None в целочисленных полях маску -9999.

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

C помощью словаря замаскируйте другими значениями все значения None в целочисленных полях.

import arcpy
fields = ['field1', 'field2']
nullDict = {'field1':-999999, 'field2':-9999}
arcpy.da.TableToNumPyArray(table, fields, null_value=nullDict)
Внимание:

Указание маски, например -9999, позволяет экспортировать целочисленные поля без значений (NULL) в массив NumPy, но будьте осторожны при использовании этих значений при анализе. Результаты могут быть искажены данным значением.

(Значение по умолчанию — None)

Integer
Возвращаемое значение
Тип данныхОписание
NumPyArray

Структурированный массив NumPy.

Пример кода

Пример TableToNumPyArray 1

Преобразование таблицы в массив NumPY и выполнение базовых статистических операций с 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())
Пример TableToNumPyArray 2

Используйте функцию TableToNumPyArray для определения коэффициентов корреляции для двух полей.

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

Связанные разделы