Краткая информация
Конвертирует класс объектов в структурированный массив 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})
Параметр | Описание | Тип данных |
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 для выражений запросов, применяемых в ArcGIS. (Значение по умолчанию — "") | 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])))