[Matrix-SIG] Casts and slices
Christos Siopis
siopis@astro.ufl.edu
Sat, 13 Mar 1999 20:16:25 -0500 (EST)
Greetings, fellow NumPyers
First off, thanks to all the noble souls who created NumPy and
then shared it with the rest of us :) Having just changed from
an environment where unlimited IDL (in fact, PV WAVE) licenses
were available to a place where no IDL is available, I did
appreciate NumPy's availability :)
I have a question about what might be a possible inconsistency:
>>> b = reshape(ones(20, 'f'), (10,2))
>>> b[:,0] = b[:,1] # This works fine: both sides are of the same type.
>>> b[:,0] = sqrt(b[:,1]) # This also works fine.
>>> b[:,0] = b[:,1]**3 # Should this not also work if sqrt works?
Traceback (innermost last):
File "<stdin>", line 1, in ?
TypeError: Array can not be safely cast to required type
If the previous does not work because it attempts to cast a
double (right hand side) into a float, then should the following
not also produce an error, since each element of the list is
a Python double:
>>> b[:,0] = (b[:,1]**3).tolist() # It works.
>>> b[:,0] = map(float, b[:,1]**3) # It also works.
Since many operations have right hand sides which are doubles,
I was wondering if there is an easier way to assign results to
float array elements than using the tolist() method or map().
====
A second question: using take() one can access noncontiguous
elements of an array. Is there a way to also assign values to
noncontiguous elements? I mean something like:
b[(0,1,4)] = [1.2, 3.4, 5.3]
One last question is also coming under a different subject.
Thanks,
Christos Siopis