[Numpy-discussion] add .H attribute?
Dag Sverre Seljebotn
d.s.seljebotn at astro.uio.no
Tue Jul 23 04:35:16 EDT 2013
On 07/23/2013 09:35 AM, Dave Hirschfeld wrote:
> Alan G Isaac <alan.isaac <at> gmail.com> writes:
>
>>
>> On 7/22/2013 3:10 PM, Nathaniel Smith wrote:
>>> Having .T but not .H is an example of this split.
>>
>> Hate to do this but ...
>>
>> Readability counts.
>
> +10!
>
> A.conjugate().transpose() is unspeakably horrible IMHO. Since there's no way
> to avoid a copy you gain nothing by not providing the convenience function.
>
> It should be fairly obvious that an operation which changes the values of an
> array (and doesn't work in-place) necessarily takes a copy. I think it's more
> than sufficient to simply document the fact that A.H will return a copy.
I don't think this is obvious at all. In fact, I'd fully expect A.H to
return a view that conjugates the values on the fly as they are
read/written (just the same way the array is "transposed on the fly" or
"sliced on the fly" with other views).
There's lots of uses for A.H to be a conjugating-view, e.g., np.dot(A.H,
A) can be done on-the-fly by BLAS at no extra cost, and so on. These are
currently not possible with pure NumPy without a copy, which is a pretty
big defect IMO (and one reason I'd call BLAS myself using Cython rather
than use np.dot...)
So -1 on using A.H for anything but a proper view, and "A.conjt()" or
something similar for a method that does a copy.
Dag Sverre
More information about the NumPy-Discussion
mailing list