如何处理numpy数组以与ESRI的arcpy.da.NumPyArrayToTab一起使用

2024-04-20 12:19:48 发布

您现在位置:Python中文网/ 问答频道 /正文

ESRI提供了从表到阵列再从表向后移动数据的访问。我有一个脚本,从api调用中获取人口普查数据并将其转换为数组,进行一些简单的数学运算,然后,理想情况下,将其输出到表中。计算时,数组不能是rec数组。vstack、hstack或concatenate的组合似乎都没有给出好的结果。我求助于创建单独的一维数组作为recarray,然后在中使用merge函数np.lib.rec函数。合并\u数组。当然还有更好的办法。在

ESRI从TableToNumPyArray返回:

>>> testArray
array([ (41039000100.0, 2628.0, 100.0, 2339.0, 135.0, 18.0, 22.0, 16.0, 25.0, 0.0, 92.0, 0.0, 92.0, 0.0, 92.0, 0.0, 92.0, 6.0, 9.0, 249.0, 90.0, 0.0, 92.0, 1, u'41039000100'),
...
dtype=[('Geo_id', '<f8'), ('TotalUnits', '<f8'), ('MOE_Total', '<f8'), >('Total_1_detached', '<f8'), ('MOE_Total_1_detached', '<f8'), ('Total_1_attached', >'<f8'), ('MOE_Total_1_attached', '<f8'), ('Total_2', '<f8'), ('MOE_Total_2', '<f8'), >('Total_3_or_4', '<f8'), ('MOE_Total_3_or_4', '<f8'), ('Total_5_to_9', '<f8'), >('MOE_Total_5_to_9', '<f8'), ('Total_10_to_19', '<f8'), ('MOE_Total_10_to_19', '<f8'), >('Total_20_to_49', '<f8'), ('MOE_Total_20_to_49', '<f8'), ('Total_50_or_more', '<f8'), >('MOE_Total_50_or_more', '<f8'), ('Total_Mobile_home', '<f8'), ('MOE_Total_Mobile_home', '<f8'), ('Total_Boat_RV_van_etc', '<f8'), ('MOE_Total_Boat_RV_van_etc', '<f8'), >('ObjectID', '<i4'), ('geo_id_t', '<U50')])

我的代码片段看起来像

^{pr2}$

我想我更喜欢在构造数组之前合并/连接/堆叠数组。思想?在


Tags: orto数据函数idmore数组mobile
1条回答
网友
1楼 · 发布于 2024-04-20 12:19:48

您应该能够使用结构化数组(从技术上讲,您没有使用recarrays)来进行“简单的数学运算”。我不确定您是否显示了您想要进行的数学运算,但例如,如果您想:

HHsize_array = Tpop_array/Tunits_array 

但不想拥有所有这些独立的数组,您可以简单地对主数组(合并数组)的views进行计算,我们将其称为data

^{pr2}$

其中HHsizeTpop、和{}都是一个名为data的结构化数组中的字段名,这样您就可以

>>> data.dtype
dtype([('Geo_id', '|S13'), ('Tpop', np.int32), ('Tunits_array', np.int32), ('HHsize', np.float32)])

相关问题 更多 >