Hi,

Thanks to everybody for all you valuable responses. This approach by
Rick White seems to nail it all down:

>> b = np.array([
>>  [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3,  4, 4, 4, 5,  5, 5, 6, 7, 8, 9, 10, 
>> 11],
>>  [5, 6, 1, 0, 2, 7, 3, 8, 1, 4, 9, 2, 10, 5, 3, 4, 11, 0, 0, 1, 2, 3,  4,  5]
>> ])
>> 
>> a = [1,2,3,7,8]
>> 
>> keepdata = np.ones(12, dtype=np.bool)
>> keepdata[a] = False
>> w = np.where(keepdata[b[0]] & keepdata[b[1]])
>> newindex = keepdata.cumsum()-1
>> c = newindex[b[:,w[0]]]

Also, I'd like to mention that I did think about using the graph module
from SciPy. But the index bookkeeping done by numpy is in fact index
pointers to memory location in a C++ driver - and not just labels.

An when atoms are deleted, there memory chunks are also cleared, and
therefore all pointers to these must be decremented. So using numpy for
the bookkeeping seems a natural choice.

Best regards,

Mads

On 02/03/2014 02:36 PM, Rick White wrote:
> b = np.array([
>  [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3,  4, 4, 4, 5,  5, 5, 6, 7, 8, 9, 10, 11],
>  [5, 6, 1, 0, 2, 7, 3, 8, 1, 4, 9, 2, 10, 5, 3, 4, 11, 0, 0, 1, 2, 3,  4,  5]
> ])
> 
> a = [1,2,3,7,8]
> 
> keepdata = np.ones(12, dtype=np.bool)
> keepdata[a] = False
> w = np.where(keepdata[b[0]] & keepdata[b[1]])
> newindex = keepdata.cumsum()-1
> c = newindex[b[:,w[0]]]

-- 
+---------------------------------------------------------+
| Mads Ipsen                                              |
+----------------------+----------------------------------+
| Gåsebæksvej 7, 4. tv | phone:              +45-29716388 |
| DK-2500 Valby        | email:      mads.ip...@gmail.com |
| Denmark              | map  :   www.tinyurl.com/ns52fpa |
+----------------------+----------------------------------+
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to