TypeError:int参数必须是字符串,类似字节的对象或数字,而不是“ map”

问题描述

我无法运行此代码,并且遇到以下错误

strucArray = np.array(arrayTuple,np.dtype([('inSeqNum',np.int),(lstVals[0],np.float)]))
TypeError: int() argument must be a string,a bytes-like object or a number,not 'map'

这是代码块:

seqnum = None
lstFile = open(inListFileName)

for lstLn in lstFile.readlines():
    lstVals = lstLn.strip().split()

    basePath=os.getcwd()
    file=os.path.join(basePath,'OUT_ST',lstVals[1])

    if len(lstVals) > 1:
        loadArray = np.loadtxt(file).flatten()

        if seqnum is None:
            seqnum = np.arange(1,len(loadArray) + 1)
    
        arrayTuple = map(tuple,np.column_stack((seqnum,loadArray)))
        
        strucArray = np.array(arrayTuple,np.float)]))
    
        arcpy.da.ExtendTable(target,seqFieldName,strucArray,'inSeqNum',False)

lstFile.close()

解决方法

我认为您只需要在此行添加一个列表强制转换即可

strucArray = np.array(arrayTuple,np.dtype([('inSeqNum',np.int),(lstVals[0],np.float)])

对此:

strucArray = np.array(list(arrayTuple),np.int)`,np.float)]))