File tree Expand file tree Collapse file tree 4 files changed +48
-0
lines changed Expand file tree Collapse file tree 4 files changed +48
-0
lines changed Original file line number Diff line number Diff line change 99 "HasNDim" ,
1010 "HasShape" ,
1111 "HasSize" ,
12+ "HasTranspose" ,
1213 "__version__" ,
1314 "__version_tuple__" ,
1415)
2223 HasNDim ,
2324 HasShape ,
2425 HasSize ,
26+ HasTranspose ,
2527)
2628from ._version import version as __version__ , version_tuple as __version_tuple__
Original file line number Diff line number Diff line change 77 "HasNDim" ,
88 "HasShape" ,
99 "HasSize" ,
10+ "HasTranspose" ,
1011)
1112
1213from types import ModuleType
@@ -158,6 +159,36 @@ def size(self) -> int | None:
158159 ...
159160
160161
162+ class HasTranspose (Protocol ):
163+ """Protocol for array classes that support the transpose operation."""
164+
165+ @property
166+ def T (self ) -> Self : # noqa: N802
167+ """Transpose of the array.
168+
169+ The array instance must be two-dimensional. If the array instance is not
170+ two-dimensional, an error should be raised.
171+
172+ Returns:
173+ Self: two-dimensional array whose first and last dimensions (axes)
174+ are permuted in reverse order relative to original array. The
175+ returned array must have the same data type as the original
176+ array.
177+
178+ Notes:
179+ Limiting the transpose to two-dimensional arrays (matrices) deviates
180+ from the NumPy et al practice of reversing all axes for arrays
181+ having more than two-dimensions. This is intentional, as reversing
182+ all axes was found to be problematic (e.g., conflicting with the
183+ mathematical definition of a transpose which is limited to matrices;
184+ not operating on batches of matrices; et cetera). In order to
185+ reverse all axes, one is recommended to use the functional
186+ `PermuteDims` interface found in this specification.
187+
188+ """
189+ ...
190+
191+
161192class Array (
162193 # ------ Attributes -------
163194 HasDType [DTypeT_co ],
Original file line number Diff line number Diff line change @@ -74,6 +74,13 @@ _: xpt.HasShape = nparr
7474_ : xpt .HasShape = nparr_i32
7575_ : xpt .HasShape = nparr_f32
7676
77+ # =========================================================
78+ # `xpt.HasTranspose`
79+
80+ _ : xpt .HasTranspose = nparr
81+ _ : xpt .HasTranspose = nparr_i32
82+ _ : xpt .HasTranspose = nparr_f32
83+
7784# =========================================================
7885# `xpt.Array`
7986
Original file line number Diff line number Diff line change @@ -85,6 +85,14 @@ _: xpt.HasSize = nparr_i32
8585_ : xpt .HasSize = nparr_f32
8686_ : xpt .HasSize = nparr_b
8787
88+ # =========================================================
89+ # `xpt.HasTranspose`
90+
91+ _ : xpt .HasTranspose = nparr
92+ _ : xpt .HasTranspose = nparr_i32
93+ _ : xpt .HasTranspose = nparr_f32
94+ _ : xpt .HasTranspose = nparr_b
95+
8896# =========================================================
8997# `xpt.Array`
9098
You can’t perform that action at this time.
0 commit comments