How can this code be made more Pythonic?
Posted
by
usethedeathstar
on Stack Overflow
See other posts from Stack Overflow
or by usethedeathstar
Published on 2013-10-25T09:03:44Z
Indexed on
2013/10/25
9:55 UTC
Read the original article
Hit count: 210
This next part of code does exactly what I want it to do. dem_rows
and dem_cols
contain float values for a number of things i can identify in an image, but i need to get the nearest pixel for each of them, and than to make sure I only get the unique points, and no duplicates.
The problem is that this code is ugly and as far as I get it, as unpythonic as it gets. If there would be a pure-numpy-solution (without for-loops) that would be even better.
# next part is to make sure that we get the rounding done correctly, and than to get the integer part out of it
# without the annoying floatingpoint-error, and without duplicates
fielddic={}
for i in range(len(dem_rows)):
# here comes the ugly part: abusing the fact that i overwrite dictionary keys if I get duplicates
fielddic[int(round(dem_rows[i]) + 0.1), int(round(dem_cols[i]) + 0.1)] = None
# also very ugly: to make two arrays of integers out of the first and second part of the keys
field_rows = numpy.zeros((len(fielddic.keys())), int)
field_cols = numpy.zeros((len(fielddic.keys())), int)
for i, (r, c) in enumerate(fielddic.keys()):
field_rows[i] = r
field_cols[i] = c
© Stack Overflow or respective owner