Сводка
Конвертирует класс объектов в структурированный массив NumPy.
Описание
NumPy – это основной пакет для экспоненциальных вычислений в Python с поддержкой мощных n-размерных объектов типа массив (array). Подробнее см. в разделе Работа с NumPy в ArcGIS.
Для конвертации таблиц в массив NumPy следует использовать функцию TableToNumPyArray.
Синтаксис
FeatureClassToNumPyArray (in_table, field_names, {where_clause}, {spatial_reference}, {explode_to_points}, {skip_nulls}, {null_value})
Parameter | Объяснение | Тип данных |
in_table | Входной класс объектов, слой, таблица или табличное представление. | String |
field_names [field_names,...] | Список (или кортеж) имен полей. Для одного поля можно использовать строку вместо списка строк. Используйте символ звездочки (*) вместо списка полей, если вы хотите получить доступ ко всем полям из входной таблицы (растровые поля и поля BLOB исключены). Однако для повышения производительности и улучшения надежности порядка полей рекомендуется сузить список полей до реально необходимых полей. Поля растра и типа BLOB не поддерживаются. Объекты геометрии не поддерживаются при использовании токена SHAPE@, но информация о геометрии может быть включена при использовании других токенов, таких как SHAPE@XY (кортеж координат центроидаобъекта), SHAPE@AREA и SHAPE@LENGTH. Доступ к дополнительной информации можно получить, используя токены (такие как OID@) вместо имен полей:
Экспорт класса объектов в массив NumPy. Выходной массив включает поле для идентификатора объекта и поле с кортежем координат x и y центроида объекта.
Токены SHAPE@M и SHAPE@Z возвращают значения, только если in_table содержит точечные объекты и поддерживает значение M (или Z). Если in_table содержит полигональные, полилинейные или составные объекты, SHAPE@M и SHAPE@Z возвращают значение nan. Класс объектов, не поддерживающий значения M или Z, не поддерживает и токены SHAPE@M и SHAPE@Z. (Значение по умолчанию — *) | String |
where_clause | Возвращается дополнительное выражение, которое ограничивает записи. Более подробно об условиях WHERE и выражениях SQL см. раздел Справочник по SQL для элементов, используемых в выражениях запросов. (Значение по умолчанию — "") | String |
spatial_reference | Пространственная привязка класса объектов. Ее можно указать с объектом SpatialReference или со строковым эквивалентом. Используйте аргумент spatial_reference для возврата координат в другой пространственной привязке. Здесь описывается второй класс объектов для доступа к объекту пространственной привязки.
(Значение по умолчанию — None) | SpatialReference |
explode_to_points | Разбивает объект на отдельные точки или вершины. Если для explode_to_points задано значение True, то мультиточечный объект с пятью точками, например, представляется пятью строками. (Значение по умолчанию — False) | Boolean |
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.
Примечание:В массивах NumPy строки с null представляются в типах с плавающей запятой, как nan, а в текстовых типах – как None. Целочисленные типы не поддерживают концепцию NULL. (Значение по умолчанию — False) | Variant |
null_value | Заменяет NULL из входных данных на новое значение. null_value заменяется до вычисления skip_nulls. Замаскируйте все значения Нет (None) в целочисленных полях значением -9999.
С помощью словаря замаскируйте другими значениями все отсутствующие значения None в целочисленных полях.
Внимание:Указание маски, например -9999, позволяет экспортировать целочисленные поля без значений (NULL) в массив NumPy, но будьте осторожны при использовании этих значений при анализе. Результаты могут быть искажены данным значением. (Значение по умолчанию — None) | Integer |
Тип данных | Объяснение |
NumPyArray | Структурированный массив NumPy. |
Пример кода
Преобразование таблицы в массив NumPY и выполнение базовых статистических операций с NumPY.
import arcpy
import numpy
input = "c:/data/usa.gdb/USA/counties"
arr = arcpy.da.FeatureClassToNumPyArray(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 для определения коэффициентов корреляции для двух полей.
import arcpy
import numpy
input = "c:/data/usa.gdb/USA/counties"
field1 = "INCOME"
field2 = "EDUCATION"
arr = arcpy.da.FeatureClassToNumPyArray(input, (field1, field2))
# Print correlation coefficients for comparison of 2 field values
#
print(numpy.corrcoef((arr[field1], arr[field2])))