I want to pull out a set of fields for objects in a Django queryset and convert them into a matrix with the fields as columns for some computation. I've gotten to the point of :
qs = models.Devices.objects.all()
params = qs.values('b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8')
which returns a list of dictionaries ordered by object.
I want to know if there's a good way to convert these into rows of a numpy matrix and also if there is a way to keep an index of where these values are held in the db?
I want to do some calculations (sometimes different ones depending on the parameter type) and then eventually use the resultant vectors to populate/overwrite an existing column in the db such that the ordering is the same.
You could
values_list()
method to get a list of lists. Include the id
in the values. params
and generate a list of ids
. params
as the parameter for numpy.matrix()
. Iterate over the ids and save the values from each row of the matrix to the corresponding object.
import numpy as np qs = models.Devices.objects.all() params = qs.values_list('id', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8') ids = [arr.pop(0) for arr in params] matrix = np.matrix(params) # perform operations here for index, id in enumerate(ids): row = matrix[index].flat obj = qs.get(id=id) obj.b1 = row.next() obj.b2 = row.next() obj.b3 = row.next() obj.b4 = row.next() obj.b5 = row.next() obj.b6 = row.next() obj.b7 = row.next() obj.save()
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.