使用ArcPy Statistics_analysis计算平均值,in_memory

使用ArcPy Statistics_analysis计算平均值,in_memory

问题描述:

因此,所选择的值之间要计算中值。使用ArcPy Statistics_analysis计算平均值,in_memory

arcpy.env.workspace = r"Database Connections\local.sde" 
pLoc = "local.DBO.Parcels" 
luLoc = "local.DBO.Land_Use" 
luFields = ["MedYrBlt","MedVal","OCCount"] 
arcpy.MakeFeatureLayer_management(pLoc,"cities_lyr") 
arcpy.SelectLayerByAttribute_management("cities_lyr", "NEW_SELECTION", "YrBlt > 1000") 

从选择cities_lyr想从YrBlt

with arcpy.da.SearchCursor(luLoc, ["[email protected]", "[email protected]", luFields[0], luFields[1], luFields[2]]) as cursor: 
    for row in cursor: 
     if arcpy.Exists('in_memory/stats'): 
     arcpy.Delete_management(r'in_memory/stats') 
     arcpy.SelectLayerByLocation_management('cities_lyr', select_features = row[1]) 
     arcpy.Statistics_analysis('cities_lyr', 'in_memory/stats','YrBlt MEAN','OBJECTID') 

这里计算平均值场。问题是: 我只是想看到的平均值,我该怎么办呢?


luFields = ["MedYrBlt","MedVal","OCCount"] 

打算以后使用,现在并不重要。

+0

只是万一你没有意识到它有一个[gis.se]堆栈交换与许多ArcPy的问题已经回答了它。 – PolyGeo

将值附加到空数组,然后计算该数组的平均值。例如:

# Create array & cycle through years, append values to array 
yrArray =[] 
for row in cursor: 
    val = getValue("yrBlt") 
    yrArray.append(val) 

#get sum of all values in array 
x = 0 
for i in yrArray: 
    x += i 

#get average by dividing above sum by the length of the array. 
meanYrBlt = x/len(yrArray) 

在另一方面也可能是有益的这些过程分离出来到自己的类。例如:

class arrayAvg: 
    def __init__(self,array): 
     x = 0 
     for i in array: 
      x += 1 
     arrayLength = len(array) 
     arrayAvg = x/arrayLength 
     self.avg = arrayAvg 
     self.count = arrayLength 

这种方式可以通过调用重用代码:

yrBltAvg = arrayAvg(yrArray) 
avg = yrBltAvg.avg #returns average 
count = yrBltAvg.count #returns count 

第二部分是不必要的,但可以利用面向对象的编程的,并且可以在该膨胀整个计划。