[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