Краткая информация
Выполняет преобразование таблицы в структурированный массив 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@) вместо имен полей:
(Значение по умолчанию — *) | 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. Функцию Python и выражение lambda можно использовать для более детального управления, например, записи в журнал значений OID всех записей с NULL. В обоих примерах ниже, выражение lambda или функция используются для определения OID с записями null. Используйте функцию для получения всех записей, пропущенных из-за NULL. Используйте лямбда-выражения для получения всех записей, пропущенных из-за NULL. Примечание:В массивах NumPy строки с null представляются в типах с плавающей запятой, как nan, а в текстовых типах – как None. Целочисленные типы не поддерживают концепцию NULL. (Значение по умолчанию — False) | Variant |
null_value | Заменяет NULL из входных данных на новое значение. null_value заменяется до вычисления skip_nulls. Mask None values in integer fields with a -9999.
Mask None values in integer fields with different values using a dictionary.
Внимание:Указание маски, например -9999, позволяет экспортировать целочисленные поля без значений (NULL) в массив NumPy, но будьте осторожны при использовании этих значений при анализе. Результаты могут быть искажены данным значением. (Значение по умолчанию — None) | Integer |
Тип данных | Описание |
NumPyArray | Структурированный массив NumPy. |
Пример кода
Преобразуйте таблицу в массив 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 для определения коэффициентов корреляции для двух полей.
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])))