Pramod wrote: > #/usr/bin/python > from numpy import matrix > n=input('Enter matrix range') > fr=open('mat.txt','r') > print ('Enter elements into the matrix\n') > a=matrix([[input()for j in range(n)] for i in range(n)]) > for i in range(n): > for j in range(n): > print a[i][j] > print '\n' > > When i run the above program the following error is Coming please > Error is > Enter matrix range3 > Enter elements into the matrix > > 1 > 2 > 3 > 4 > 5 > 6 > 7 > 8 > 9 > [[1 2 3]] > Traceback (most recent call last): > File "2.py", line 10, in <module> > print a[i][j] > File "/usr/lib/python2.6/dist-packages/numpy/core/defmatrix.py", > line 265, in __getitem__ > out = N.ndarray.__getitem__ > > please resolve my problem Thanks in advance
You can either use an array instead of a matrix and continue to access the elements like you did in your code >>> a = numpy.array([[1,2],[3,4]]) >>> a[1][1] 4 or continue to use the matrix and access its elements with a tuple >>> b = numpy.matrix([[1,2],[3,4]]) >>> b[1,1] 4 If you pass only one index you get another, smaller matrix: >>> b[1] matrix([[3, 4]]) Once you see this printed it should be clear that b[1][1] asks for the non- existent second row of the above matrix. Hence the error: >>> b[1][1] Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.6/dist-packages/numpy/core/defmatrix.py", line 265, in __getitem__ out = N.ndarray.__getitem__(self, index) IndexError: index out of bounds By the way, these matrices are really strange beasts: >>> b[0][0] matrix([[1, 2]]) >>> b[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0] matrix([[1, 2]]) Peter -- http://mail.python.org/mailman/listinfo/python-list