TableToNumPyArray

概要

テーブルを NumPy 構造化配列に変換します。

ディスカッション

NumPy is a fundamental package for scientific computing in Python, including support for a powerful N-dimensional array object. For more information, see Working with NumPy in 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@ など) を使用してアクセスできます。

  • OID@Returns the value of the ObjectID field.

(デフォルト値は次のとおりです *)

String
where_clause

返されるレコードを制限するオプションの条件式。 WHERE 句と SQL ステートメントの詳細については、クエリ式で使用されるエレメントの SQL リファレンスをご参照ください。

(デフォルト値は次のとおりです "")

String
skip_nulls

NULL を使用するレコードをスキップするかどうかを制御します。 ブール値の True または False、または Python 関数または lambda 式を指定できます。

True に設定した場合、レコードの属性に NULL が含まれている場合 (ジオメトリを含む)、そのレコードはスキップされます。 False 設定では、skip_nulls は NULL に関係なくすべてのレコードを使用しようとします。 NumPy 配列では、NULL は浮動小数値の場合 NaN (Not a Number) と表現されますが、整数の場合は表現できません。

以下に、NULL を含むすべてのレコードをスキップする例を示します。

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

Python 関数または lambda 式を使用すると、NULL 値を含むすべてのレコードの OID 値を記録するなど、より細かく制御することができます。 以下の 2 つの例では、NULL レコードを含む OID を特定するために lambda 式または関数が使用されています。

関数を使用して、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 は float タイプでは nan、テキスト タイプでは None などと表現されます。 整数タイプは、NULL 値の概念をサポートしていません。

(デフォルト値は次のとおりです False)

Variant
null_value

入力の NULL 値を新しい値に置き換えます。

null_value は、skip_nulls が評価される前に置き換えられます。

Mask None values in integer fields with a -9999.

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

Mask None values in integer fields with different values using a dictionary.

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 を使用して、2 つのフィールドの相関係数を求めます。

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])))

関連トピック