[Numpy-discussion] How to output array with indexes to a text file?

Jonathan Helmus jjhelmus at gmail.com
Thu Aug 25 15:36:57 EDT 2011


Paul Menzel wrote:
> Dear NumPy folks,
>
>
> is there an easy way to also save the indexes of an array (columns, rows
> or both) when outputting it to a text file. For saving an array to a
> file I only found `savetxt()` [1] which does not seem to have such an
> option. Adding indexes manually is doable but I would like to avoid
> that.
>
>         --- minimal example (also attached) ---
>         from numpy import *
>         
>         a = zeros([2, 3], int)
>         print(a)
>         
>         savetxt("/tmp/test1.txt", a, fmt='%8i')
>         
>         # Work around for adding the indexes for the columns.
>         a[0] = range(3)
>         print(a)
>         
>         savetxt("/tmp/test2.txt", a, fmt='%8i')
>         --- minimal example ---
>
> The output is the following.
>
>         $ python output-array.py 
>         [[0 0 0]
>          [0 0 0]]
>         [[0 1 2]
>          [0 0 0]]
>         $ more /tmp/test*
>         ::::::::::::::
>         /tmp/test1.txt
>         ::::::::::::::
>                0        0        0
>                0        0        0
>         ::::::::::::::
>         /tmp/test2.txt
>         ::::::::::::::
>                0        1        2
>                0        0        0
>
> Is there a way to accomplish that task without reserving the 0th row or
> column to store the indexes?
>
> I want to process these text files to produce graphs and MetaPost’s [2]
> graph package needs these indexes. (I know about Matplotlib [3], but I
> would like to use MetaPost.)
>
>
> Thanks,
>
> Paul
>
>
> [1] http://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html
> [2] http://wiki.contextgarden.net/MetaPost
> [3] http://matplotlib.sourceforge.net/
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
Paul,

I don't know of any numpy function which will output the array indexes 
but with numpy's ndindex this can be accomplished with a for loop.

import numpy as np
a = np.arange(12).reshape(3,4)
f = open("test.txt",'w')

for i in np.ndindex(a.shape):
    print >> f," ".join([str[s] for s in i]),a[i]
f.close()

cat test.txt
0 0 0
0 1 1
0 2 2
...




More information about the NumPy-Discussion mailing list