[Numpy-discussion] Fw: array indices and dictionary
Dinesh B Vadhia
dineshbvadhia at hotmail.com
Sun Sep 21 13:51:53 EDT 2008
Ooops, I should have said that this is easy to do with 2 for loops ie.
import numpy
from collections import defaultdict
A =
[[1 6 1 2 3]
[4 5 4 7 0]
[2 0 8 0 2]
[0 0 0 3 7]
[0 7 0 3 5]
[8 0 3 0 6]
[8 0 0 2 2]
[3 1 0 4 0]
[5 0 8 0 0]
[2 1 0 5 6]]
dict = defaultdict(list)
I = A.shape[0]
J = A.shape[1]
for i in xrange(0, I, 1):
for j in xrange(0, J, 1):
if a[i,j] > 0:
dict[i].append(j)
I want to find a faster/efficient way to do this without using the 2 for loops. Thanks!
Dinesh
From: Dinesh B Vadhia
Sent: Sunday, September 21, 2008 10:28 AM
To: numpy-discussion at scipy.org
Subject: array indices and dictionary
Hi! Say, I've got a numpy array/matrix of the form:
A =
[[1 6 1 2 3]
[4 5 4 7 0]
[2 0 8 0 2]
[0 0 0 3 7]
[0 7 0 3 5]
[8 0 3 0 6]
[8 0 0 2 2]
[3 1 0 4 0]
[5 0 8 0 0]
[2 1 0 5 6]]
I want to create a dictionary of row indexes (as the keys) mapped to lists of the column indexes of non-zero numbers in that row ie.
dictionary_non-zeros = {
0: [0 1 2 3 4]
1: [0 1 2 3]
2: [0 2 4]
3: [3 4]
...
9: [0 1 3 4]
}
How can I do this?
This code ...
d = {}
for number, row in enumerate(A):
d[number] = [value for value in row if value !=0]
... picks up the non-zero values in each row eg.
d = {0: [1, 6, 1, 2, 3], 1: [4, 5, 4, 7], 2: [2, 8, 2], 3: [3, 7], ... 9: [2, 1, 5, 6]}
But, I want to pick up the column index of non-zero elements per row.
Thanks!
Dinesh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20080921/94d561a7/attachment.html>
More information about the NumPy-Discussion
mailing list