On 04/11/2011 05:40 AM, David Crisp wrote: > On Mon, Apr 11, 2011 at 1:17 PM, David Crisp <[email protected]> wrote: >> On Mon, Apr 11, 2011 at 11:00 AM, Sturla Molden <[email protected]> wrote: >>> Den 11.04.2011 02:01, skrev David Crisp: >>>> Can anybody guide me through this problem? > > I dont know how acceptable it is to answer your own question :P here goes: > > TO some extent I have solved my problem, But I am unsure if it is the > correct way of solving it: > > for each_line in point_scandata: > matrix_x = round_to_value((each_line[0]-x_offset),horizontal_precision) > matrix_y = round_to_value((each_line[1]-y_offset),horizontal_precision) > <---- vertical_precision? > if vegetation_matrix[matrix_x,matrix_y] == None: > vegetation_matrix[matrix_x,matrix_y] = Record() > vegetation_matrix[matrix_x,matrix_y].add(each_line[2]) Hi, you should initialize the matrix when creating it. What about vegeration_matrix = numpy.array([[Record() for _ in xrange(x_bins+1)] for _ in xrange(y_bins+1)]) Then you could avoid the ugly if.
A more general question: why do you want to use numpy object arrays at all? You are not using any array operatations with your Record objects. The numpy array of objects is equivalent to a two-dimensional list. You could use a normal Python list just as well: vegetation_matrix = [[Record() for _ in xrange(x_bins+1)] for _ in xrange(y_bins+1)] vegetation_matrix[4][3].add(11) Best, Zbyszek _______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
