> The new discrepancy between `arr.T` and `arr.transpose()` is justified, as
> `T` is defined by the Array API, where `transpose` isn't and should retain
> the existing behavior.
The other side of the coin here is that this change would fix the
discrepancy between `arr.T` and the functions `np.matrix_transpose` and
`np.linalg.matrix_transpose`, which implement batched transpose over
matrices in the 2 innermost dimensions, rather than reversing all axes.
In [*10*]: X = np.stack((np.eye(2), np.eye(2)))
In [*12*]: X.T
Out[*12*]:
array([[[1., 1.],
[0., 0.]],
[[0., 0.],
[1., 1.]]])
In [*13*]: np.matrix_transpose(X)
Out[*13*]:
array([[[1., 0.],
[0., 1.]],
[[1., 0.],
[0., 1.]]])
Cheers,
Lucas
On 12 Apr 2025, at 11:14, Mateusz Sokol <[email protected]> wrote:
Hi all!
The Array API standard states that `T` property should only be applied to
2-dimensional arrays, in all other cases it should raise an error:
https://data-apis.org/array-api/latest/API_specification/generated/array_api.array.T
To ensure that NumPy also follows this rule, I opened a PR that raises a
warning for `arr.T` for non-2-dimensional arrays and scalars:
https://github.com/numpy/numpy/pull/28678
For non-2-dimensional arrays, the replacement for `arr.T` can be either:
Array API compatible, namely `np.permute_dims(arr, range(arr.ndim)[::-1])`,
or shorter, NumPy specific: `arr.transpose()`.
The new discrepancy between `arr.T` and `arr.transpose()` is justified, as
`T` is defined by the Array API, where `transpose` isn't and should retain
the existing behavior.
Please share your thoughts!
Best regards,
Mateusz
_______________________________________________
NumPy-Discussion mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: [email protected]
_______________________________________________
NumPy-Discussion mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: [email protected]