概要
フィーチャクラスを 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 配列に変換するには、代わりに 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@ など) を使用してアクセスできます。
Export a feature class to a NumPy array. The output array will include a field for the Object ID and a field containing a tuple of the feature's centroid's x,y coordinates.
SHAPE@M and SHAPE@Z tokens will only return values if the in_table contains point features and is m-aware (or z-aware). If the in_table contains polygon, polyline, or multipart features, SHAPE@M and SHAPE@Z will return a nan. Any feature class that is not m-aware or z-aware will not support SHAPE@M and SHAPE@Z tokens. (デフォルト値は次のとおりです *) | String |
where_clause | 返されるレコードを制限するオプションの条件式。 WHERE 句と SQL ステートメントの詳細については、「クエリ式の作成」をご参照ください。 (デフォルト値は次のとおりです "") | String |
spatial_reference | フィーチャクラスの空間参照。 これは、SpatialReference オブジェクトまたは同等の文字列を使用して指定できます。 Use the spatial_reference argument to return coordinates in a different spatial reference. Here, a second feature class is described to access a spatial reference object.
(デフォルト値は次のとおりです None) | SpatialReference |
explode_to_points | フィーチャを個々のポイントまたは頂点に分解します。 explode_to_points が True に設定されている場合、たとえば 5 つのポイントがあるマルチポイント フィーチャは 5 つの行で表現されます。 (デフォルト値は次のとおりです False) | Boolean |
skip_nulls | NULL を使用するレコードをスキップするかどうかを制御します。 ブール値の True または False、または Python 関数または lambda 式を指定できます。 True に設定した場合、レコードの属性に NULL が含まれている場合 (ジオメトリを含む)、そのレコードはスキップされます。 False 設定では、skip_nulls は NULL に関係なくすべてのレコードを使用しようとします。 NumPy 配列では、NULL は浮動小数値の場合 NaN (Not a Number) と表現されますが、整数の場合は表現できません。 Skip all records that include a null.
Python 関数または lambda 式を使用すると、NULL 値を含むすべてのレコードの OID 値を記録するなど、より細かく制御することができます。 以下の 2 つの例では、NULL レコードを含む OID を特定するために lambda 式または関数が使用されています。 Use a function to capture all records that are skipped because of nulls.
Use a lambda expression to capture all records that are skipped because of nulls.
(デフォルト値は次のとおりです False) | Variant |
null_value | 入力の NULL 値を新しい値に置き換えます。 null_value は、skip_nulls が評価される前に置き換えられます。 Mask all None's in integer fields with a -9999.
Mask None's in integer fields with different values using a dictionary.
(デフォルト値は次のとおりです 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 を使用して、2 つのフィールドの相関係数を求めます。
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])))