Robert Kern wrote: > KraftDiner wrote: >> I have a list that starts out as a two dimensional list >> I convert it to a 1D list by: >> >> b = sum(a, []) >> >> any idea how I can take be and convert it back to a 2D list? > > Alternatively, you could use real multidimensional arrays instead of faking it > with lists. >
Or, you can fake real multidimensional arrays with lists ;-) pyarray is a pure-Python single-module implementation of a multi-dimensional array type. Download from http://svn.brownspencer.com/pyarray/trunk/pyarray.py Simple example: >>> import pyarray >>> a = pyarray.ndlist([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]) >>> a array([[[ 1, 2, 3], [ 4, 5, 6]], [[ 7, 8, 9], [10, 11, 12]]]) >>> a.flat array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) Tests at: http://svn.brownspencer.com/pyarray/trunk/test_pyarray.py User docs at: http://svn.brownspencer.com/pyarray/trunk/pyarray_usage.txt pyarray.ListView and pyarray.ArrayView offer a substantial subset of numpy.ArrayType functionality, by wrapping standard python 'list' and 'array.array' respectively. Key features include: * Views: all subscripting operations apart from individual cell access access return views to existing 'live' data * Extended Indexing: slicing, arbitrary 'takes', index arrays etc... * Unlimited re-shaping: while still addressing one data-source * Elementwise binary operations: all basic arithmetic and comparison operations * Data broadcasting: allows assignment and binary operations between views of different shapes * Friendly __repr__: work safely with big arrays at the interactive prompt Another example: >>> tmp = pyarray.arange(256)**2 >>> a = pyarray.ndlist([tmp]*256) >>> a array([[ 0, 1, 4, ..., 64009, 64516, 65025], [ 0, 1, 4, ..., 64009, 64516, 65025], [ 0, 1, 4, ..., 64009, 64516, 65025], ..., [ 0, 1, 4, ..., 64009, 64516, 65025], [ 0, 1, 4, ..., 64009, 64516, 65025], [ 0, 1, 4, ..., 64009, 64516, 65025]]) >>> a.transpose() array([[ 0, 0, 0, ..., 0, 0, 0], [ 1, 1, 1, ..., 1, 1, 1], [ 4, 4, 4, ..., 4, 4, 4], ..., [64009, 64009, 64009, ..., 64009, 64009, 64009], [64516, 64516, 64516, ..., 64516, 64516, 64516], [65025, 65025, 65025, ..., 65025, 65025, 65025]]) >>> a[:10,:10] array([[ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81], [ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81], [ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81], [ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81], [ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81], [ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81], [ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81], [ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81], [ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81], [ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81]]) >>> Michael -- http://mail.python.org/mailman/listinfo/python-list