#!/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 ]