next up previous contents
Next: Tests of assembling from Up: Getting started and examples Previous: Tests of linear algebra   Contents

Tests of slicing into submatrices

The file test_slice.py tests slicing a matrix into submatrices and assigning values to submatrices. Results are at 3.4


#!/usr/bin/env python
# (C) 2000 Huaiyu Zhu <hzhu@users.sourceforge.net>.  Licence: GPL
# $Id: test_slice.py,v 1.2 2000/07/26 20:58:27 hzhu Exp $
"""
Test slicing for Matrix module
Note that getslice and setslice is only used for 1d arrays.
For higher dim, the getitem and setitem are used with slice objects.
"""

class A:
	def __getitem__(self, *i):		print "getitem", i
	def __setitem__(self, *i):		print "setitem", i
	def __getslice__(self, *i):		print "getslice", i
	def __setslice__(self, *i):		print "setslice", i

a = A()
a[1]
a[1] = 2
a[1:2]
a[1:2] = 3
a[1,2]
a[1,2] = 3
a[1,2:3]
a[1:2, 3]
a[1:2, 3] = 4
a[1, 2:3] = 4
a[1:2, 3:4]
a[1:2, 3:4] = 5

#------------------------------------------------------------------
from MatPy.Matrix import *

print "-"*40, "row vectors"
a = rand(6)
print a
print a[1]
a[1] = 2
print a
print a[1:4]
a[1:4] = [2,3,4]
print a

print "-"*40, "column vectors"
a = rand(6).T
print a
print a[1]
a[1] = 2
print a
print a[1:4]
a[1:4] = [2,3,4]
print a

print "-"*40, "matrices items"
A = rand((4,4))
print A, A.__class__
print A[1,2]
A[1,3] = 3
print A

print "-"*40, "matrices slices"
print A[1, 2:4]
A[1, 2:4] = [1,2]
print A

print "-"*40, "vectors as submatrices"
print A[0,:]
print A[:,0]

print "-"*40, "matrices slices"
print A[1:3, 2:4]
A[1:3, 2:4] = zeros((2,2))
print A


Result obtained with
>>> from MatPy.tests import test_slice


getitem (1,)
setitem (1, 2)
getslice (1, 2)
setslice (1, 2, 3)
getitem ((1, 2),)
setitem ((1, 2), 3)
getitem ((1, slice(2, 3, None)),)
getitem ((slice(1, 2, None), 3),)
setitem ((slice(1, 2, None), 3), 4)
setitem ((1, slice(2, 3, None)), 4)
getitem ((slice(1, 2, None), slice(3, 4, None)),)
setitem ((slice(1, 2, None), slice(3, 4, None)), 5)
---------------------------------------- row vectors
[ 0.829  0.897  0.761  0.983  0.312  0.575 ]
0.896994531155
[ 0.829  2      0.761  0.983  0.312  0.575 ]
[ 2      0.761  0.983 ]
[ 0.829  2      3      4      0.312  0.575 ]
---------------------------------------- column vectors
[ 0.0946
  0.658
  0.989
  0.875
  0.991
  0.32  ]
0.658199727535
[ 0.0946
  2    
  0.989
  0.875
  0.991
  0.32  ]
[ 2    
  0.989
  0.875 ]
[ 0.0946
  2    
  3    
  4    
  0.991
  0.32  ]
---------------------------------------- matrices items
[ 0.699  0.171  0.584  0.973
  0.909  0.767  0.211  0.302
  0.31   0.537  0.978  0.599
  0.569  0.984  0.213  0.403 ] MatPy.Matrix.Matrix
0.210701078176
[ 0.699  0.171  0.584  0.973
  0.909  0.767  0.211  3    
  0.31   0.537  0.978  0.599
  0.569  0.984  0.213  0.403 ]
---------------------------------------- matrices slices
[ 0.211  3     ]
[ 0.699  0.171  0.584  0.973
  0.909  0.767  1      2    
  0.31   0.537  0.978  0.599
  0.569  0.984  0.213  0.403 ]
---------------------------------------- vectors as submatrices
[ 0.699  0.171  0.584  0.973 ]
[ 0.699
  0.909
  0.31 
  0.569 ]
---------------------------------------- matrices slices
[ 1      2    
  0.978  0.599 ]
[ 0.699  0.171  0.584  0.973
  0.909  0.767  0      0    
  0.31   0.537  0      0    
  0.569  0.984  0.213  0.403 ]



Huaiyu Zhu
2002-03-23