9. Array Attributes
There are four array attributes; however, they are only available when using
Python 2.2 or later. There are array methods that may be used instead. The
attributes are shape, flat, real and imaginary.
- shape
-
Accessing the shape attribute is equivalent to calling the
getshape method; it returns the shape tuple. Assigning a value to
the shape attribute is equivalent to calling the setshape method.
>>> print a
[[0 1 2]
[3 4 5]
[6 7 8]]
>>> print a.shape
(3,3)
>>> a.shape = ((9,))
>>> print a.shape
(9,)
- flat
-
Accessing the flat attribute of an array returns the flattened, or
raveled version of that array, without having to do a function
call. This is equivalent to calling the getflat method. The
returned array has the same number of elements as the input array, but it is
of rank-1. One cannot set the flat attribute of an array, but one can use
the indexing and slicing notations to modify the contents of the array:
>> print a
[[0 1 2]
[3 4 5]
[6 7 8]]
>> print a.flat
0 1 2 3 4 5 6 7 8]
>> a.flat[4] = 100
>> print a
[[ 0 1 2]
[ 3 100 5]
[ 6 7 8]]
>> a.flat = arange(9,18)
>> print a
[[ 9 10 11]
[12 13 14]
[15 16 17]]
- real
-
- imag
-
- imaginary
-
These attributes exist only for complex arrays. They return respectively
arrays filled with the real and imaginary parts of their elements. The
equivalent methods for getting and setting these values are
getreal, setreal, methodgetimag and methodsetimag.
methodgetimaginary and methodsetimaginary are synonyms for
methodgetimag and methodsetimag respectively, and .imag is a
synonym for .imaginary. The arrays returned are not contiguous
(except for arrays of length 1, which are always contiguous).
.real, .imag and .imaginary are modifiable:
>>> print x
[ 0. +1.j 0.84147098+0.54030231j 0.90929743-0.41614684j]
>>> print x.real
[ 0. 0.84147098 0.90929743]
>>> print x.imag
[ 1. 0.54030231 -0.41614684]
>>> x.imag = arange(3)
>>> print x
[ 0. +0.j 0.84147098+1.j 0.90929743+2.j]
>>> x = reshape(arange(10), (2,5)) + 0j # make complex array
>>> print x
[[ 0.+0.j 1.+0.j 2.+0.j 3.+0.j 4.+0.j]
[ 5.+0.j 6.+0.j 7.+0.j 8.+0.j 9.+0.j]]
>>> print x.real
[[ 0. 1. 2. 3. 4.]
[ 5. 6. 7. 8. 9.]]
>>> print x.type(), x.real.type()
D d
>>> print x.itemsize(), x.imag.itemsize()
16 8
Send comments to the NumArray community.