[Numpy-discussion] matrix problem: float to matrix power

Robert Kern robert.kern at gmail.com
Wed Oct 31 13:34:43 EDT 2007


Charles R Harris wrote:
> On 10/31/07, Robert Kern <robert.kern at gmail.com> wrote:
>> Charles R Harris wrote:
>>> On 10/31/07, Alan G Isaac <aisaac at american.edu> wrote:
>>>>>>> 1.0**numpy.array([1,2,3])
>>>> array([ 1.,  1.,  1.])
>>>>>>> 1.0**numpy.mat([1,2,3])
>>>> Traceback (most recent call last):
>>>>   File "<stdin>", line 1, in <module>
>>>> TypeError: unsupported operand type(s) for ** or pow(): 'float' and 'matrix'
>>>>
>>>> Why the restriction for matrices?
>>> Looks like it just got overlooked. It works fine for 2D arrays.
>>>
>>> In [11]: 1.0**eye(3)
>>> Out[11]:
>>> array([[ 1.,  1.,  1.],
>>>        [ 1.,  1.,  1.],
>>>        [ 1.,  1.,  1.]])
>> For ndarrays, it does elementwise exponentiation, so it is neither here nor
>> there with respect to matrices. What is the definition of a scalar raised to a
>> matrix power? I don't ever recall seeing one.
> 
> I suppose the usual:
> 
> a**m = exp(ln(a)*m)
> 
> but that isn't the broadcast version.

Ah, yes. Of course. How silly of me.

That raises the question of how to calculate the bloody thing, though. We have
three implementations of expm() in scipy.linalg.matfuncs.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco



More information about the NumPy-Discussion mailing list