est Ci-dessous le code que je me bats avec comme un débutant:Numpy erreur savetxt
commonfields = arcpy.ListFields(gt_pnts)
names = [f.name for f in commonfields]
needed_names = names[3:]
gt_pnts_arr = arcpy.da.FeatureClassToNumPyArray(gt_pnts, needed_names)
gt_pnts_arr = gt_pnts_arr.reshape((gt_pnts_arr.shape[0],1))
eq_smpled_pnts_arr = arcpy.da.FeatureClassToNumPyArray(eq_smpled_pnts, needed_names)
eq_smpled_pnts_arr = eq_smpled_pnts_arr.reshape((eq_smpled_pnts_arr.shape[0],1))
master_table = np.concatenate((gt_pnts_arr, eq_smpled_pnts_arr), axis=0)
np.savetxt(outputcsvfilename,master_table, fmt="%.1f")
erreur est comme ci-dessous:
TypeError: float argument required, not numpy.void
J'ai cherché et trouvé cette exception soulevée lorsque le type de données n'est pas défini. Mais quand je test comme ci-dessous, je suis dans le dilemma-
>>>master_table.dtype.descr
>>>[('grid_code', '<i4'), ('b1_Clip_ProximityRaster1', '<f4'), ('b2_Clip_ProximityRaster1', '<f4'), ('b3_Clip_ProximityRaster1', '<f4'), ('b4_Clip_ProximityRaster1', '<f4'), ('b5_Clip_ProximityRaster1', '<f4'), ('b6_Clip_ProximityRaster1', '<f4'), ('b7_Clip_ProximityRaster1', '<f4'), ('b8_Clip_ProximityRaster1', '<f4'), ('b9_Clip_ProximityRaster1', '<f4'), ('b10_Clip_ProximityRaster1', '<f4'), ('b11_Clip_ProximityRaster1', '<f4'), ('b12_Clip_ProximityRaster1', '<f4'), ('b13_Clip_ProximityRaster1', '<f4'), ('resp', '<U2')]
>>>master_table
array([[ (13, 13.0, 3810.0, 3810.0, 1982.952392578125, 3873.71923828125, 34869.9140625, 5483.3564453125, 7272.138671875, 4409.591796875, 872.0665283203125, 36238.62109375, 4441.62109375, 6775.2861328125, u'1')],
[ (1, 1.0, 3601.99951171875, 3603.12353515625, 1626.9295654296875, 3725.922607421875, 34595.9453125, 5810.5595703125, 7592.90478515625, 4476.0361328125, 576.2811889648438, 36462.984375, 4499.0, 7164.47509765625, u'1')],
[ (13, 13.0, 3721.93505859375, 3723.02294921875, 1642.3458251953125, 3842.928466796875, 34713.43359375, 5702.3681640625, 7597.17041015625, 4562.07177734375, 657.9513549804688, 36343.12890625, 4586.9599609375, 7111.0126953125, u'1')],.....................
>>>master_table.shape
>>>(50, 1)
>>>gt_pnts_arr.shape
>>>(25, 1)
Même moi, je ne peux pas charger ce master_table
dans dataframe de pandas géants comme dessous-
df = pd.DataFrame(data=master_table[1:,1:], index=master_table[1:,0],columns=master_table[0,1:])
MaTable types de données: Il y a 13 et colums 50 lignes dans le master_table
. Le type de données de la première et de la dernière colonne est respectivement entier et entier, mais tous les autres types de données (11) sont flottants.
me semble que votre 'master_table' est non numérique à cause de la dernière colonne de' u'1'', et il contient aussi des tuples python au lieu d'être multidimensionnel avec des flottants. Vous avez probablement juste besoin de reformater vos données ... – Julien
@JulienBernu Ok a édité la question. Tu as raison! – SIslam
Les tableaux numériques 2d sont les plus faciles pour 'savetxt'. Il peut aussi gérer les tableaux structurés en 1d, mais obtenir le droit 'fmt' peut être plus délicat. Le code n'est pas compliqué - il suffit de répéter et de formater la 'ligne' avec 'fmt% tuple (row)'. Le vide numpy est un enregistrement de votre tableau structuré. – hpaulj