Package MDSplus ::
Module mdsarray
|
|
1 import numpy,copy
2 from types import NotImplementedType
3 from mdsdata import Data,makeData
4 from _mdsdtypes import *
5 from mdsscalar import Scalar
6
8 if isinstance(value,Array):
9 return value
10 if isinstance(value,Scalar):
11 return makeArray((value._value,))
12 if isinstance(value,tuple) | isinstance(value,list):
13 return makeArray(numpy.array(value))
14 if isinstance(value,numpy.ndarray):
15 if str(value.dtype)[0:2] == '|S':
16 return StringArray(value)
17 if str(value.dtype) == 'bool':
18 return makeArray(value.__array__(numpy.uint8))
19 if str(value.dtype) == 'object':
20 raise TypeError,'cannot make Array out of an numpy.ndarray of dtype object'
21 exec 'ans='+str(value.dtype).capitalize()+'Array(value)'
22 return ans
23 if isinstance(value,numpy.generic) | isinstance(value,int) | isinstance(value,long) | isinstance(value,float) | isinstance(value,str) | isinstance(value,bool):
24 return makeArray(numpy.array(value).reshape(1))
25 raise TypeError,'Cannot make Array out of '+str(type(value))
26
27
30 if self.__class__.__name__ == 'Array':
31 raise TypeError,"cannot create 'Array' instances"
32 if self.__class__.__name__ == 'StringArray':
33 self._value=numpy.array(value).__array__(numpy.string_)
34 return
35 exec 'self._value=numpy.array(value).__array__(numpy.'+self.__class__.__name__[0:len(self.__class__.__name__)-5].lower()+')'
36 return
37
38
39
40
41
42
43
45 exec 'ans=self._value.'+name
46 return ans
47
49 """Return the numpy ndarray representation of the array"""
50 return self._value
51
52 value=property(_getValue)
53
54
56 return makeData(getattr(self._value,op)())
57
59 try:
60 y=y._value
61 except (AttributeError),e:
62 pass
63 return makeData(getattr(self._value,op)(y))
64
66 try:
67 y=y._value
68 except (AttributeError),e:
69 pass
70 try:
71 z=z._value
72 except (AttributeError),e:
73 pass
74 return makeData(getattr(self._value,op)(y,z))
75
77 return {'Uint8Array':DTYPE_BU,'Uint16Array':DTYPE_WU,'Uint32Array':DTYPE_LU,'Uint64Array':DTYPE_QU,
78 'Int8Array':DTYPE_B,'Int16Array':DTYPE_W,'Int32Array':DTYPE_L,'Int64Array':DTYPE_Q,
79 'StringArray':DTYPE_T,
80 'Float32Array':DTYPE_FS,
81 'Float64Array':DTYPE_FT}[self.__class__.__name__]
82
83 mdsdtype=property(_getMdsDtypeNum)
84
86 raise TypeError,'__array__ not yet supported'
87
89 return type(self)(self._value)
90
93
96
99
101 return self._unop('all')
102
104 return self._unop('any')
105
107 if axis:
108 return self._binop('argmax',axis[0])
109 else:
110 return self._unop('argmax')
111
113 if axis:
114 return self._binop('argmin',axis[0])
115 else:
116 return self._unop('argmin')
117
118 - def argsort(self,axis=-1,kind='quicksort',order=None):
120
123
125 return self._unop('byteswap')
126
127 - def clip(self,y,z):
128 return self._triop('clip',y,z)
129
130
132 """8-bit signed number"""
133
135 """16-bit signed number"""
136
138 """32-bit signed number"""
139
141 """64-bit signed number"""
142
144 """8-bit unsigned number"""
146 """Return data item if this array was returned from serialize.
147 @rtype: Data
148 """
149 return Data.deserialize(self)
150
152 """16-bit unsigned number"""
153
155 """32-bit unsigned number"""
156
158 """64-bit unsigned number"""
159
161 """32-bit floating point number"""
162
164 """64-bit floating point number"""
165
167 """String"""
169 """Reverse add: x.__radd__(y) <==> y+x
170 @rtype: Data"""
171 return self.execute('$//$',y,self)
173 """Add: x.__add__(y) <==> x+y
174 @rtype: Data"""
175 return self.execute('$//$',self,y)
177 """String: x.__str__() <==> str(x)
178 @rtype: String"""
179 return self.decompile()
180
182 """128-bit signed number"""
184 raise TypeError,"Int128Array is not yet supported"
185
187 """128-bit unsigned number"""
189 raise TypeError,"Uint128Array is not yet supported"
190