Краткая информация
Конвертирует таблицу в структурированный массив 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 не поддерживаются. Доступ к дополнительной информации можно получить, используя токены (такие как OID@) вместо имен полей:
(Значение по умолчанию — *) | String |
where_clause | Возвращается дополнительное выражение, которое ограничивает записи. Более подробно об условиях WHERE и выражениях SQL см. раздел Построение выражения запроса. (Значение по умолчанию — "") | String |
skip_nulls | Управляет тем, пропускаются ли записи со значениями NULL. Это может быть логическое значение True или False, функция Python или lambda-выражение. Если задано значение True, запись пропускается, если какой-либо из атрибутов записи (в том числе геометрия) имеет значение NULL. При значении False skip_nulls пытается использовать все записи, вне зависимости от отсутствия значений (null). В массиве NumPy отсутствие значений представляется как nan (not a number – не число) для числовых значений с плавающей точкой, но не для целых чисел. Ниже приведен пример пропуска всех записей с NULL.
Функцию Python и lambda-выражение можно использовать для более детального управления, например, записи в журнал значений OID всех записей с NULL. В обоих примерах ниже lambda-выражение или функция используются для определения OID с записями без значений (NULL). Используйте функцию для получения всех записей, пропущенных из-за NULL.
Используйте лямбда-выражения для получения всех записей, пропущенных из-за NULL.
(Значение по умолчанию — False) | Variant |
null_value | Заменяет NULL из входных данных на новое значение. null_value заменяется до вычисления skip_nulls. Наложите на значения None в целочисленных полях маску -9999.
C помощью словаря замаскируйте другими значениями все значения None в целочисленных полях.
(Значение по умолчанию — 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])))