[EMAIL PROTECTED] wrote: > hi > i am looking for some info about mapping btw values in an array and > corresponding columns of a matrix > > i have an numpy array=[11.0,33.0,22.0,55.0,44.0] > and a numpy matrix object= > matrix(([1.3,2.5,3.2,6.7,3.1], > [9.7,5.6,4.8,2.5,2.2], > [5.1,3.7,9.6,3.1,6.7], > [5.6,3.3,1.5,2.4,8.5])) > the first value of array(ie 11.0) is related to the first column of > matrix and so on.. > i wish to create a mapping btw each val of array and corresponding col > of matrix..and then i want to sort the array and retrieve the matrix > columns for some values of sorted array..can anyone advise how to go > about it.. > > dn >
If this were a less helpful mailing list I'd say something like "there is also a numpy mailing list and you've overwritten the object class." Anyway, the following would work, but it's not going to be fast for millions of elements: from numpy import matrix, asarray obj = matrix(([1.3,2.5,3.2,6.7,3.1], [9.7,5.6,4.8,2.5,2.2], [5.1,3.7,9.6,3.1,6.7], [5.6,3.3,1.5,2.4,8.5])) ar = asarray(obj) val_to_col_list = [] for row in ar: for ind,val in enumerate(row): val_to_col_list.append((val,ind)) val_to_col_list.sort() If instead you require a map, such that each value maps to a list of the columns it appears in, you could try the following: val_col_map = {} for row in ar: for col,val in enumerate(row): tmplist=val_col_map.get(val,[]) tmplist.append(col) val_col_map[val]=tmplist val_keys = val_col_map.keys() val_keys.sort() val_keys is now a sorted list of unique values from your original matrix. Use these values as keys for val_col_map. Eww... but it works. You'll want to be really careful with floating point numbers as keys, see http://docs.python.org/tut/node16.html for more details. Best of luck, Cameron. -- http://mail.python.org/mailman/listinfo/python-list