TableToNumPyArray (arcpy.da)

Резюме

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

Обсуждение

Функция FeatureClassToNumPyArray аналогична функции TableToNumPyArray. Функция FeatureClassToNumPyArray также предоставляет дополнительные аргументы для работы с данными объектов.

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

Синтаксис

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

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

String
field_names
[field_names,...]

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

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

Поля даты, растра и BLOB не поддерживаются.

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

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

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

String
where_clause

Возвращается дополнительное выражение, которое ограничивает записи. Дополнительные сведения о выражениях WHERE и инструкциях SQL см. в разделах Построение выражения запроса и Определение запроса в Python.

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

String
skip_nulls

Управляет пропусканием записей со значениями NULL. Это может быть логическое значение true или false, функция Python или лямбда-выражение.

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

Пример пропуска всех записей со значениями NULL.

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

Выражение функции Python или лямбда-можно использовать для более точного управления, например записи в журнал значений OID всех записей со значением NULL. В обоих примерах ниже выражение лямбда или функция используются для определения 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_null.

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

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

С помощью словаря замаскируйте другими значениями все значения Нет (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])))

Связанные темы

9/10/2013