_function_base_impl.pyi 73 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324
  1. from _typeshed import ConvertibleToInt, Incomplete
  2. from collections.abc import Callable, Iterable, Sequence
  3. from typing import (
  4. Any,
  5. Concatenate,
  6. Literal as L,
  7. Never,
  8. ParamSpec,
  9. Protocol,
  10. SupportsIndex,
  11. SupportsInt,
  12. TypeAlias,
  13. overload,
  14. type_check_only,
  15. )
  16. from typing_extensions import TypeIs, TypeVar
  17. import numpy as np
  18. from numpy import _OrderKACF
  19. from numpy._core.multiarray import bincount
  20. from numpy._globals import _NoValueType
  21. from numpy._typing import (
  22. ArrayLike,
  23. DTypeLike,
  24. NDArray,
  25. _ArrayLike,
  26. _ArrayLikeBool_co,
  27. _ArrayLikeComplex_co,
  28. _ArrayLikeFloat_co,
  29. _ArrayLikeInt_co,
  30. _ArrayLikeNumber_co,
  31. _ArrayLikeObject_co,
  32. _ComplexLike_co,
  33. _DTypeLike,
  34. _FloatLike_co,
  35. _NestedSequence as _SeqND,
  36. _NumberLike_co,
  37. _ScalarLike_co,
  38. _ShapeLike,
  39. _SupportsArray,
  40. )
  41. __all__ = [
  42. "select",
  43. "piecewise",
  44. "trim_zeros",
  45. "copy",
  46. "iterable",
  47. "percentile",
  48. "diff",
  49. "gradient",
  50. "angle",
  51. "unwrap",
  52. "sort_complex",
  53. "flip",
  54. "rot90",
  55. "extract",
  56. "place",
  57. "vectorize",
  58. "asarray_chkfinite",
  59. "average",
  60. "bincount",
  61. "digitize",
  62. "cov",
  63. "corrcoef",
  64. "median",
  65. "sinc",
  66. "hamming",
  67. "hanning",
  68. "bartlett",
  69. "blackman",
  70. "kaiser",
  71. "trapezoid",
  72. "i0",
  73. "meshgrid",
  74. "delete",
  75. "insert",
  76. "append",
  77. "interp",
  78. "quantile",
  79. ]
  80. _T = TypeVar("_T")
  81. _T_co = TypeVar("_T_co", covariant=True)
  82. # The `{}ss` suffix refers to the PEP 695 (Python 3.12) `ParamSpec` syntax, `**P`.
  83. _Tss = ParamSpec("_Tss")
  84. _ScalarT = TypeVar("_ScalarT", bound=np.generic)
  85. _ScalarT1 = TypeVar("_ScalarT1", bound=np.generic)
  86. _ScalarT2 = TypeVar("_ScalarT2", bound=np.generic)
  87. _FloatingT = TypeVar("_FloatingT", bound=np.floating)
  88. _InexactT = TypeVar("_InexactT", bound=np.inexact)
  89. _InexactTimeT = TypeVar("_InexactTimeT", bound=np.inexact | np.timedelta64)
  90. _InexactDateTimeT = TypeVar("_InexactDateTimeT", bound=np.inexact | np.timedelta64 | np.datetime64)
  91. _ScalarNumericT = TypeVar("_ScalarNumericT", bound=np.inexact | np.timedelta64 | np.object_)
  92. _AnyDoubleT = TypeVar("_AnyDoubleT", bound=np.float64 | np.longdouble | np.complex128 | np.clongdouble)
  93. _ArrayT = TypeVar("_ArrayT", bound=np.ndarray)
  94. _ArrayFloatingT = TypeVar("_ArrayFloatingT", bound=NDArray[np.floating])
  95. _ArrayFloatObjT = TypeVar("_ArrayFloatObjT", bound=NDArray[np.floating | np.object_])
  96. _ArrayComplexT = TypeVar("_ArrayComplexT", bound=NDArray[np.complexfloating])
  97. _ArrayInexactT = TypeVar("_ArrayInexactT", bound=NDArray[np.inexact])
  98. _ArrayNumericT = TypeVar("_ArrayNumericT", bound=NDArray[np.inexact | np.timedelta64 | np.object_])
  99. _ArrayLike1D: TypeAlias = _SupportsArray[np.dtype[_ScalarT]] | Sequence[_ScalarT]
  100. _ShapeT = TypeVar("_ShapeT", bound=tuple[int, ...])
  101. _integer_co: TypeAlias = np.integer | np.bool
  102. _float64_co: TypeAlias = np.float64 | _integer_co
  103. _floating_co: TypeAlias = np.floating | _integer_co
  104. # non-trivial scalar-types that will become `complex128` in `sort_complex()`,
  105. # i.e. all numeric scalar types except for `[u]int{8,16} | longdouble`
  106. _SortsToComplex128: TypeAlias = (
  107. np.bool
  108. | np.int32
  109. | np.uint32
  110. | np.int64
  111. | np.uint64
  112. | np.float16
  113. | np.float32
  114. | np.float64
  115. | np.timedelta64
  116. | np.object_
  117. )
  118. _Array: TypeAlias = np.ndarray[_ShapeT, np.dtype[_ScalarT]]
  119. _Array0D: TypeAlias = np.ndarray[tuple[()], np.dtype[_ScalarT]]
  120. _Array1D: TypeAlias = np.ndarray[tuple[int], np.dtype[_ScalarT]]
  121. _Array2D: TypeAlias = np.ndarray[tuple[int, int], np.dtype[_ScalarT]]
  122. _Array3D: TypeAlias = np.ndarray[tuple[int, int, int], np.dtype[_ScalarT]]
  123. _ArrayMax2D: TypeAlias = np.ndarray[tuple[int] | tuple[int, int], np.dtype[_ScalarT]]
  124. # workaround for mypy and pyright not following the typing spec for overloads
  125. _ArrayNoD: TypeAlias = np.ndarray[tuple[Never, Never, Never, Never], np.dtype[_ScalarT]]
  126. _Seq1D: TypeAlias = Sequence[_T]
  127. _Seq2D: TypeAlias = Sequence[Sequence[_T]]
  128. _Seq3D: TypeAlias = Sequence[Sequence[Sequence[_T]]]
  129. _ListSeqND: TypeAlias = list[_T] | _SeqND[list[_T]]
  130. _Tuple2: TypeAlias = tuple[_T, _T]
  131. _Tuple3: TypeAlias = tuple[_T, _T, _T]
  132. _Tuple4: TypeAlias = tuple[_T, _T, _T, _T]
  133. _Mesh1: TypeAlias = tuple[_Array1D[_ScalarT]]
  134. _Mesh2: TypeAlias = tuple[_Array2D[_ScalarT], _Array2D[_ScalarT1]]
  135. _Mesh3: TypeAlias = tuple[_Array3D[_ScalarT], _Array3D[_ScalarT1], _Array3D[_ScalarT2]]
  136. _IndexLike: TypeAlias = slice | _ArrayLikeInt_co
  137. _Indexing: TypeAlias = L["ij", "xy"]
  138. _InterpolationMethod = L[
  139. "inverted_cdf",
  140. "averaged_inverted_cdf",
  141. "closest_observation",
  142. "interpolated_inverted_cdf",
  143. "hazen",
  144. "weibull",
  145. "linear",
  146. "median_unbiased",
  147. "normal_unbiased",
  148. "lower",
  149. "higher",
  150. "midpoint",
  151. "nearest",
  152. ]
  153. # The resulting value will be used as `y[cond] = func(vals, *args, **kw)`, so in can
  154. # return any (usually 1d) array-like or scalar-like compatible with the input.
  155. _PiecewiseFunction: TypeAlias = Callable[Concatenate[NDArray[_ScalarT], _Tss], ArrayLike]
  156. _PiecewiseFunctions: TypeAlias = _SizedIterable[_PiecewiseFunction[_ScalarT, _Tss] | _ScalarLike_co]
  157. @type_check_only
  158. class _TrimZerosSequence(Protocol[_T_co]):
  159. def __len__(self, /) -> int: ...
  160. @overload
  161. def __getitem__(self, key: int, /) -> object: ...
  162. @overload
  163. def __getitem__(self, key: slice, /) -> _T_co: ...
  164. @type_check_only
  165. class _SupportsRMulFloat(Protocol[_T_co]):
  166. def __rmul__(self, other: float, /) -> _T_co: ...
  167. @type_check_only
  168. class _SizedIterable(Protocol[_T_co]):
  169. def __iter__(self) -> Iterable[_T_co]: ...
  170. def __len__(self) -> int: ...
  171. ###
  172. class vectorize:
  173. __doc__: str | None
  174. __module__: L["numpy"] = "numpy"
  175. pyfunc: Callable[..., Incomplete]
  176. cache: bool
  177. signature: str | None
  178. otypes: str | None
  179. excluded: set[int | str]
  180. def __init__(
  181. self,
  182. /,
  183. pyfunc: Callable[..., Incomplete] | _NoValueType = ..., # = _NoValue
  184. otypes: str | Iterable[DTypeLike] | None = None,
  185. doc: str | None = None,
  186. excluded: Iterable[int | str] | None = None,
  187. cache: bool = False,
  188. signature: str | None = None,
  189. ) -> None: ...
  190. def __call__(self, /, *args: Incomplete, **kwargs: Incomplete) -> Incomplete: ...
  191. @overload
  192. def rot90(m: _ArrayT, k: int = 1, axes: tuple[int, int] = (0, 1)) -> _ArrayT: ...
  193. @overload
  194. def rot90(m: _ArrayLike[_ScalarT], k: int = 1, axes: tuple[int, int] = (0, 1)) -> NDArray[_ScalarT]: ...
  195. @overload
  196. def rot90(m: ArrayLike, k: int = 1, axes: tuple[int, int] = (0, 1)) -> NDArray[Incomplete]: ...
  197. # NOTE: Technically `flip` also accept scalars, but that has no effect and complicates
  198. # the overloads significantly, so we ignore that case here.
  199. @overload
  200. def flip(m: _ArrayT, axis: int | tuple[int, ...] | None = None) -> _ArrayT: ...
  201. @overload
  202. def flip(m: _ArrayLike[_ScalarT], axis: int | tuple[int, ...] | None = None) -> NDArray[_ScalarT]: ...
  203. @overload
  204. def flip(m: ArrayLike, axis: int | tuple[int, ...] | None = None) -> NDArray[Incomplete]: ...
  205. #
  206. def iterable(y: object) -> TypeIs[Iterable[Any]]: ...
  207. # NOTE: This assumes that if `axis` is given the input is at least 2d, and will
  208. # therefore always return an array.
  209. # NOTE: This assumes that if `keepdims=True` the input is at least 1d, and will
  210. # therefore always return an array.
  211. @overload # inexact array, keepdims=True
  212. def average(
  213. a: _ArrayInexactT,
  214. axis: int | tuple[int, ...] | None = None,
  215. weights: _ArrayLikeNumber_co | None = None,
  216. returned: L[False] = False,
  217. *,
  218. keepdims: L[True],
  219. ) -> _ArrayInexactT: ...
  220. @overload # inexact array, returned=True keepdims=True
  221. def average(
  222. a: _ArrayInexactT,
  223. axis: int | tuple[int, ...] | None = None,
  224. weights: _ArrayLikeNumber_co | None = None,
  225. *,
  226. returned: L[True],
  227. keepdims: L[True],
  228. ) -> _Tuple2[_ArrayInexactT]: ...
  229. @overload # inexact array-like, axis=None
  230. def average(
  231. a: _ArrayLike[_InexactT],
  232. axis: None = None,
  233. weights: _ArrayLikeNumber_co | None = None,
  234. returned: L[False] = False,
  235. *,
  236. keepdims: L[False] | _NoValueType = ...,
  237. ) -> _InexactT: ...
  238. @overload # inexact array-like, axis=<given>
  239. def average(
  240. a: _ArrayLike[_InexactT],
  241. axis: int | tuple[int, ...],
  242. weights: _ArrayLikeNumber_co | None = None,
  243. returned: L[False] = False,
  244. *,
  245. keepdims: L[False] | _NoValueType = ...,
  246. ) -> NDArray[_InexactT]: ...
  247. @overload # inexact array-like, keepdims=True
  248. def average(
  249. a: _ArrayLike[_InexactT],
  250. axis: int | tuple[int, ...] | None = None,
  251. weights: _ArrayLikeNumber_co | None = None,
  252. returned: L[False] = False,
  253. *,
  254. keepdims: L[True],
  255. ) -> NDArray[_InexactT]: ...
  256. @overload # inexact array-like, axis=None, returned=True
  257. def average(
  258. a: _ArrayLike[_InexactT],
  259. axis: None = None,
  260. weights: _ArrayLikeNumber_co | None = None,
  261. *,
  262. returned: L[True],
  263. keepdims: L[False] | _NoValueType = ...,
  264. ) -> _Tuple2[_InexactT]: ...
  265. @overload # inexact array-like, axis=<given>, returned=True
  266. def average(
  267. a: _ArrayLike[_InexactT],
  268. axis: int | tuple[int, ...],
  269. weights: _ArrayLikeNumber_co | None = None,
  270. *,
  271. returned: L[True],
  272. keepdims: L[False] | _NoValueType = ...,
  273. ) -> _Tuple2[NDArray[_InexactT]]: ...
  274. @overload # inexact array-like, returned=True, keepdims=True
  275. def average(
  276. a: _ArrayLike[_InexactT],
  277. axis: int | tuple[int, ...] | None = None,
  278. weights: _ArrayLikeNumber_co | None = None,
  279. *,
  280. returned: L[True],
  281. keepdims: L[True],
  282. ) -> _Tuple2[NDArray[_InexactT]]: ...
  283. @overload # bool or integer array-like, axis=None
  284. def average(
  285. a: _SeqND[float] | _ArrayLikeInt_co,
  286. axis: None = None,
  287. weights: _ArrayLikeFloat_co | None = None,
  288. returned: L[False] = False,
  289. *,
  290. keepdims: L[False] | _NoValueType = ...,
  291. ) -> np.float64: ...
  292. @overload # bool or integer array-like, axis=<given>
  293. def average(
  294. a: _SeqND[float] | _ArrayLikeInt_co,
  295. axis: int | tuple[int, ...],
  296. weights: _ArrayLikeFloat_co | None = None,
  297. returned: L[False] = False,
  298. *,
  299. keepdims: L[False] | _NoValueType = ...,
  300. ) -> NDArray[np.float64]: ...
  301. @overload # bool or integer array-like, keepdims=True
  302. def average(
  303. a: _SeqND[float] | _ArrayLikeInt_co,
  304. axis: int | tuple[int, ...] | None = None,
  305. weights: _ArrayLikeFloat_co | None = None,
  306. returned: L[False] = False,
  307. *,
  308. keepdims: L[True],
  309. ) -> NDArray[np.float64]: ...
  310. @overload # bool or integer array-like, axis=None, returned=True
  311. def average(
  312. a: _SeqND[float] | _ArrayLikeInt_co,
  313. axis: None = None,
  314. weights: _ArrayLikeFloat_co | None = None,
  315. *,
  316. returned: L[True],
  317. keepdims: L[False] | _NoValueType = ...,
  318. ) -> _Tuple2[np.float64]: ...
  319. @overload # bool or integer array-like, axis=<given>, returned=True
  320. def average(
  321. a: _SeqND[float] | _ArrayLikeInt_co,
  322. axis: int | tuple[int, ...],
  323. weights: _ArrayLikeFloat_co | None = None,
  324. *,
  325. returned: L[True],
  326. keepdims: L[False] | _NoValueType = ...,
  327. ) -> _Tuple2[NDArray[np.float64]]: ...
  328. @overload # bool or integer array-like, returned=True, keepdims=True
  329. def average(
  330. a: _SeqND[float] | _ArrayLikeInt_co,
  331. axis: int | tuple[int, ...] | None = None,
  332. weights: _ArrayLikeFloat_co | None = None,
  333. *,
  334. returned: L[True],
  335. keepdims: L[True],
  336. ) -> _Tuple2[NDArray[np.float64]]: ...
  337. @overload # complex array-like, axis=None
  338. def average(
  339. a: _ListSeqND[complex],
  340. axis: None = None,
  341. weights: _ArrayLikeComplex_co | None = None,
  342. returned: L[False] = False,
  343. *,
  344. keepdims: L[False] | _NoValueType = ...,
  345. ) -> np.complex128: ...
  346. @overload # complex array-like, axis=<given>
  347. def average(
  348. a: _ListSeqND[complex],
  349. axis: int | tuple[int, ...],
  350. weights: _ArrayLikeComplex_co | None = None,
  351. returned: L[False] = False,
  352. *,
  353. keepdims: L[False] | _NoValueType = ...,
  354. ) -> NDArray[np.complex128]: ...
  355. @overload # complex array-like, keepdims=True
  356. def average(
  357. a: _ListSeqND[complex],
  358. axis: int | tuple[int, ...] | None = None,
  359. weights: _ArrayLikeComplex_co | None = None,
  360. returned: L[False] = False,
  361. *,
  362. keepdims: L[True],
  363. ) -> NDArray[np.complex128]: ...
  364. @overload # complex array-like, axis=None, returned=True
  365. def average(
  366. a: _ListSeqND[complex],
  367. axis: None = None,
  368. weights: _ArrayLikeComplex_co | None = None,
  369. *,
  370. returned: L[True],
  371. keepdims: L[False] | _NoValueType = ...,
  372. ) -> _Tuple2[np.complex128]: ...
  373. @overload # complex array-like, axis=<given>, returned=True
  374. def average(
  375. a: _ListSeqND[complex],
  376. axis: int | tuple[int, ...],
  377. weights: _ArrayLikeComplex_co | None = None,
  378. *,
  379. returned: L[True],
  380. keepdims: L[False] | _NoValueType = ...,
  381. ) -> _Tuple2[NDArray[np.complex128]]: ...
  382. @overload # complex array-like, keepdims=True, returned=True
  383. def average(
  384. a: _ListSeqND[complex],
  385. axis: int | tuple[int, ...] | None = None,
  386. weights: _ArrayLikeComplex_co | None = None,
  387. *,
  388. returned: L[True],
  389. keepdims: L[True],
  390. ) -> _Tuple2[NDArray[np.complex128]]: ...
  391. @overload # unknown, axis=None
  392. def average(
  393. a: _ArrayLikeNumber_co | _ArrayLikeObject_co,
  394. axis: None = None,
  395. weights: _ArrayLikeNumber_co | None = None,
  396. returned: L[False] = False,
  397. *,
  398. keepdims: L[False] | _NoValueType = ...,
  399. ) -> Any: ...
  400. @overload # unknown, axis=<given>
  401. def average(
  402. a: _ArrayLikeNumber_co | _ArrayLikeObject_co,
  403. axis: int | tuple[int, ...],
  404. weights: _ArrayLikeNumber_co | None = None,
  405. returned: L[False] = False,
  406. *,
  407. keepdims: L[False] | _NoValueType = ...,
  408. ) -> np.ndarray: ...
  409. @overload # unknown, keepdims=True
  410. def average(
  411. a: _ArrayLikeNumber_co | _ArrayLikeObject_co,
  412. axis: int | tuple[int, ...] | None = None,
  413. weights: _ArrayLikeNumber_co | None = None,
  414. returned: L[False] = False,
  415. *,
  416. keepdims: L[True],
  417. ) -> np.ndarray: ...
  418. @overload # unknown, axis=None, returned=True
  419. def average(
  420. a: _ArrayLikeNumber_co | _ArrayLikeObject_co,
  421. axis: None = None,
  422. weights: _ArrayLikeNumber_co | None = None,
  423. *,
  424. returned: L[True],
  425. keepdims: L[False] | _NoValueType = ...,
  426. ) -> _Tuple2[Any]: ...
  427. @overload # unknown, axis=<given>, returned=True
  428. def average(
  429. a: _ArrayLikeNumber_co | _ArrayLikeObject_co,
  430. axis: int | tuple[int, ...],
  431. weights: _ArrayLikeNumber_co | None = None,
  432. *,
  433. returned: L[True],
  434. keepdims: L[False] | _NoValueType = ...,
  435. ) -> _Tuple2[np.ndarray]: ...
  436. @overload # unknown, returned=True, keepdims=True
  437. def average(
  438. a: _ArrayLikeNumber_co | _ArrayLikeObject_co,
  439. axis: int | tuple[int, ...] | None = None,
  440. weights: _ArrayLikeNumber_co | None = None,
  441. *,
  442. returned: L[True],
  443. keepdims: L[True],
  444. ) -> _Tuple2[np.ndarray]: ...
  445. #
  446. @overload
  447. def asarray_chkfinite(a: _ArrayT, dtype: None = None, order: _OrderKACF = None) -> _ArrayT: ...
  448. @overload
  449. def asarray_chkfinite(
  450. a: np.ndarray[_ShapeT], dtype: _DTypeLike[_ScalarT], order: _OrderKACF = None
  451. ) -> _Array[_ShapeT, _ScalarT]: ...
  452. @overload
  453. def asarray_chkfinite(a: _ArrayLike[_ScalarT], dtype: None = None, order: _OrderKACF = None) -> NDArray[_ScalarT]: ...
  454. @overload
  455. def asarray_chkfinite(a: object, dtype: _DTypeLike[_ScalarT], order: _OrderKACF = None) -> NDArray[_ScalarT]: ...
  456. @overload
  457. def asarray_chkfinite(a: object, dtype: DTypeLike | None = None, order: _OrderKACF = None) -> NDArray[Incomplete]: ...
  458. # NOTE: Contrary to the documentation, scalars are also accepted and treated as
  459. # `[condlist]`. And even though the documentation says these should be boolean, in
  460. # practice anything that `np.array(condlist, dtype=bool)` accepts will work, i.e. any
  461. # array-like.
  462. @overload
  463. def piecewise(
  464. x: _Array[_ShapeT, _ScalarT],
  465. condlist: ArrayLike,
  466. funclist: _PiecewiseFunctions[Any, _Tss],
  467. *args: _Tss.args,
  468. **kw: _Tss.kwargs,
  469. ) -> _Array[_ShapeT, _ScalarT]: ...
  470. @overload
  471. def piecewise(
  472. x: _ArrayLike[_ScalarT],
  473. condlist: ArrayLike,
  474. funclist: _PiecewiseFunctions[Any, _Tss],
  475. *args: _Tss.args,
  476. **kw: _Tss.kwargs,
  477. ) -> NDArray[_ScalarT]: ...
  478. @overload
  479. def piecewise(
  480. x: ArrayLike,
  481. condlist: ArrayLike,
  482. funclist: _PiecewiseFunctions[_ScalarT, _Tss],
  483. *args: _Tss.args,
  484. **kw: _Tss.kwargs,
  485. ) -> NDArray[_ScalarT]: ...
  486. # NOTE: condition is usually boolean, but anything with zero/non-zero semantics works
  487. @overload
  488. def extract(condition: ArrayLike, arr: _ArrayLike[_ScalarT]) -> _Array1D[_ScalarT]: ...
  489. @overload
  490. def extract(condition: ArrayLike, arr: _SeqND[bool]) -> _Array1D[np.bool]: ...
  491. @overload
  492. def extract(condition: ArrayLike, arr: _ListSeqND[int]) -> _Array1D[np.int_]: ...
  493. @overload
  494. def extract(condition: ArrayLike, arr: _ListSeqND[float]) -> _Array1D[np.float64]: ...
  495. @overload
  496. def extract(condition: ArrayLike, arr: _ListSeqND[complex]) -> _Array1D[np.complex128]: ...
  497. @overload
  498. def extract(condition: ArrayLike, arr: _SeqND[bytes]) -> _Array1D[np.bytes_]: ...
  499. @overload
  500. def extract(condition: ArrayLike, arr: _SeqND[str]) -> _Array1D[np.str_]: ...
  501. @overload
  502. def extract(condition: ArrayLike, arr: ArrayLike) -> _Array1D[Incomplete]: ...
  503. # NOTE: unlike `extract`, passing non-boolean conditions for `condlist` will raise an
  504. # error at runtime
  505. @overload
  506. def select(
  507. condlist: _SizedIterable[_ArrayLikeBool_co],
  508. choicelist: Sequence[_ArrayT],
  509. default: ArrayLike = 0,
  510. ) -> _ArrayT: ...
  511. @overload
  512. def select(
  513. condlist: _SizedIterable[_ArrayLikeBool_co],
  514. choicelist: Sequence[_ArrayLike[_ScalarT]] | NDArray[_ScalarT],
  515. default: ArrayLike = 0,
  516. ) -> NDArray[_ScalarT]: ...
  517. @overload
  518. def select(
  519. condlist: _SizedIterable[_ArrayLikeBool_co],
  520. choicelist: Sequence[ArrayLike],
  521. default: ArrayLike = 0,
  522. ) -> np.ndarray: ...
  523. # keep roughly in sync with `ma.core.copy`
  524. @overload
  525. def copy(a: _ArrayT, order: _OrderKACF, subok: L[True]) -> _ArrayT: ...
  526. @overload
  527. def copy(a: _ArrayT, order: _OrderKACF = "K", *, subok: L[True]) -> _ArrayT: ...
  528. @overload
  529. def copy(a: _ArrayLike[_ScalarT], order: _OrderKACF = "K", subok: L[False] = False) -> NDArray[_ScalarT]: ...
  530. @overload
  531. def copy(a: ArrayLike, order: _OrderKACF = "K", subok: L[False] = False) -> NDArray[Incomplete]: ...
  532. #
  533. @overload # ?d, known inexact scalar-type
  534. def gradient(
  535. f: _ArrayNoD[_InexactTimeT],
  536. *varargs: _ArrayLikeNumber_co,
  537. axis: _ShapeLike | None = None,
  538. edge_order: L[1, 2] = 1,
  539. # `| Any` instead of ` | tuple` is returned to avoid several mypy_primer errors
  540. ) -> _Array1D[_InexactTimeT] | Any: ...
  541. @overload # 1d, known inexact scalar-type
  542. def gradient(
  543. f: _Array1D[_InexactTimeT],
  544. *varargs: _ArrayLikeNumber_co,
  545. axis: _ShapeLike | None = None,
  546. edge_order: L[1, 2] = 1,
  547. ) -> _Array1D[_InexactTimeT]: ...
  548. @overload # 2d, known inexact scalar-type
  549. def gradient(
  550. f: _Array2D[_InexactTimeT],
  551. *varargs: _ArrayLikeNumber_co,
  552. axis: _ShapeLike | None = None,
  553. edge_order: L[1, 2] = 1,
  554. ) -> _Mesh2[_InexactTimeT, _InexactTimeT]: ...
  555. @overload # 3d, known inexact scalar-type
  556. def gradient(
  557. f: _Array3D[_InexactTimeT],
  558. *varargs: _ArrayLikeNumber_co,
  559. axis: _ShapeLike | None = None,
  560. edge_order: L[1, 2] = 1,
  561. ) -> _Mesh3[_InexactTimeT, _InexactTimeT, _InexactTimeT]: ...
  562. @overload # ?d, datetime64 scalar-type
  563. def gradient(
  564. f: _ArrayNoD[np.datetime64],
  565. *varargs: _ArrayLikeNumber_co,
  566. axis: _ShapeLike | None = None,
  567. edge_order: L[1, 2] = 1,
  568. ) -> _Array1D[np.timedelta64] | tuple[NDArray[np.timedelta64], ...]: ...
  569. @overload # 1d, datetime64 scalar-type
  570. def gradient(
  571. f: _Array1D[np.datetime64],
  572. *varargs: _ArrayLikeNumber_co,
  573. axis: _ShapeLike | None = None,
  574. edge_order: L[1, 2] = 1,
  575. ) -> _Array1D[np.timedelta64]: ...
  576. @overload # 2d, datetime64 scalar-type
  577. def gradient(
  578. f: _Array2D[np.datetime64],
  579. *varargs: _ArrayLikeNumber_co,
  580. axis: _ShapeLike | None = None,
  581. edge_order: L[1, 2] = 1,
  582. ) -> _Mesh2[np.timedelta64, np.timedelta64]: ...
  583. @overload # 3d, datetime64 scalar-type
  584. def gradient(
  585. f: _Array3D[np.datetime64],
  586. *varargs: _ArrayLikeNumber_co,
  587. axis: _ShapeLike | None = None,
  588. edge_order: L[1, 2] = 1,
  589. ) -> _Mesh3[np.timedelta64, np.timedelta64, np.timedelta64]: ...
  590. @overload # 1d float-like
  591. def gradient(
  592. f: _Seq1D[float],
  593. *varargs: _ArrayLikeNumber_co,
  594. axis: _ShapeLike | None = None,
  595. edge_order: L[1, 2] = 1,
  596. ) -> _Array1D[np.float64]: ...
  597. @overload # 2d float-like
  598. def gradient(
  599. f: _Seq2D[float],
  600. *varargs: _ArrayLikeNumber_co,
  601. axis: _ShapeLike | None = None,
  602. edge_order: L[1, 2] = 1,
  603. ) -> _Mesh2[np.float64, np.float64]: ...
  604. @overload # 3d float-like
  605. def gradient(
  606. f: _Seq3D[float],
  607. *varargs: _ArrayLikeNumber_co,
  608. axis: _ShapeLike | None = None,
  609. edge_order: L[1, 2] = 1,
  610. ) -> _Mesh3[np.float64, np.float64, np.float64]: ...
  611. @overload # 1d complex-like (the `list` avoids overlap with the float-like overload)
  612. def gradient(
  613. f: list[complex],
  614. *varargs: _ArrayLikeNumber_co,
  615. axis: _ShapeLike | None = None,
  616. edge_order: L[1, 2] = 1,
  617. ) -> _Array1D[np.complex128]: ...
  618. @overload # 2d float-like
  619. def gradient(
  620. f: _Seq1D[list[complex]],
  621. *varargs: _ArrayLikeNumber_co,
  622. axis: _ShapeLike | None = None,
  623. edge_order: L[1, 2] = 1,
  624. ) -> _Mesh2[np.complex128, np.complex128]: ...
  625. @overload # 3d float-like
  626. def gradient(
  627. f: _Seq2D[list[complex]],
  628. *varargs: _ArrayLikeNumber_co,
  629. axis: _ShapeLike | None = None,
  630. edge_order: L[1, 2] = 1,
  631. ) -> _Mesh3[np.complex128, np.complex128, np.complex128]: ...
  632. @overload # fallback
  633. def gradient(
  634. f: ArrayLike,
  635. *varargs: _ArrayLikeNumber_co,
  636. axis: _ShapeLike | None = None,
  637. edge_order: L[1, 2] = 1,
  638. ) -> Incomplete: ...
  639. #
  640. @overload # n == 0; return input unchanged
  641. def diff(
  642. a: _T,
  643. n: L[0],
  644. axis: SupportsIndex = -1,
  645. prepend: ArrayLike | _NoValueType = ..., # = _NoValue
  646. append: ArrayLike | _NoValueType = ..., # = _NoValue
  647. ) -> _T: ...
  648. @overload # known array-type
  649. def diff(
  650. a: _ArrayNumericT,
  651. n: int = 1,
  652. axis: SupportsIndex = -1,
  653. prepend: ArrayLike | _NoValueType = ...,
  654. append: ArrayLike | _NoValueType = ...,
  655. ) -> _ArrayNumericT: ...
  656. @overload # known shape, datetime64
  657. def diff(
  658. a: _Array[_ShapeT, np.datetime64],
  659. n: int = 1,
  660. axis: SupportsIndex = -1,
  661. prepend: ArrayLike | _NoValueType = ...,
  662. append: ArrayLike | _NoValueType = ...,
  663. ) -> _Array[_ShapeT, np.timedelta64]: ...
  664. @overload # unknown shape, known scalar-type
  665. def diff(
  666. a: _ArrayLike[_ScalarNumericT],
  667. n: int = 1,
  668. axis: SupportsIndex = -1,
  669. prepend: ArrayLike | _NoValueType = ...,
  670. append: ArrayLike | _NoValueType = ...,
  671. ) -> NDArray[_ScalarNumericT]: ...
  672. @overload # unknown shape, datetime64
  673. def diff(
  674. a: _ArrayLike[np.datetime64],
  675. n: int = 1,
  676. axis: SupportsIndex = -1,
  677. prepend: ArrayLike | _NoValueType = ...,
  678. append: ArrayLike | _NoValueType = ...,
  679. ) -> NDArray[np.timedelta64]: ...
  680. @overload # 1d int
  681. def diff(
  682. a: _Seq1D[int],
  683. n: int = 1,
  684. axis: SupportsIndex = -1,
  685. prepend: ArrayLike | _NoValueType = ...,
  686. append: ArrayLike | _NoValueType = ...,
  687. ) -> _Array1D[np.int_]: ...
  688. @overload # 2d int
  689. def diff(
  690. a: _Seq2D[int],
  691. n: int = 1,
  692. axis: SupportsIndex = -1,
  693. prepend: ArrayLike | _NoValueType = ...,
  694. append: ArrayLike | _NoValueType = ...,
  695. ) -> _Array2D[np.int_]: ...
  696. @overload # 1d float (the `list` avoids overlap with the `int` overloads)
  697. def diff(
  698. a: list[float],
  699. n: int = 1,
  700. axis: SupportsIndex = -1,
  701. prepend: ArrayLike | _NoValueType = ...,
  702. append: ArrayLike | _NoValueType = ...,
  703. ) -> _Array1D[np.float64]: ...
  704. @overload # 2d float
  705. def diff(
  706. a: _Seq1D[list[float]],
  707. n: int = 1,
  708. axis: SupportsIndex = -1,
  709. prepend: ArrayLike | _NoValueType = ...,
  710. append: ArrayLike | _NoValueType = ...,
  711. ) -> _Array2D[np.float64]: ...
  712. @overload # 1d complex (the `list` avoids overlap with the `int` overloads)
  713. def diff(
  714. a: list[complex],
  715. n: int = 1,
  716. axis: SupportsIndex = -1,
  717. prepend: ArrayLike | _NoValueType = ...,
  718. append: ArrayLike | _NoValueType = ...,
  719. ) -> _Array1D[np.complex128]: ...
  720. @overload # 2d complex
  721. def diff(
  722. a: _Seq1D[list[complex]],
  723. n: int = 1,
  724. axis: SupportsIndex = -1,
  725. prepend: ArrayLike | _NoValueType = ...,
  726. append: ArrayLike | _NoValueType = ...,
  727. ) -> _Array2D[np.complex128]: ...
  728. @overload # unknown shape, unknown scalar-type
  729. def diff(
  730. a: ArrayLike,
  731. n: int = 1,
  732. axis: SupportsIndex = -1,
  733. prepend: ArrayLike | _NoValueType = ...,
  734. append: ArrayLike | _NoValueType = ...,
  735. ) -> NDArray[Incomplete]: ...
  736. #
  737. @overload # float scalar
  738. def interp(
  739. x: _FloatLike_co,
  740. xp: _ArrayLikeFloat_co,
  741. fp: _ArrayLikeFloat_co,
  742. left: _FloatLike_co | None = None,
  743. right: _FloatLike_co | None = None,
  744. period: _FloatLike_co | None = None,
  745. ) -> np.float64: ...
  746. @overload # complex scalar
  747. def interp(
  748. x: _FloatLike_co,
  749. xp: _ArrayLikeFloat_co,
  750. fp: _ArrayLike1D[np.complexfloating] | list[complex],
  751. left: _NumberLike_co | None = None,
  752. right: _NumberLike_co | None = None,
  753. period: _FloatLike_co | None = None,
  754. ) -> np.complex128: ...
  755. @overload # float array
  756. def interp(
  757. x: _Array[_ShapeT, _floating_co],
  758. xp: _ArrayLikeFloat_co,
  759. fp: _ArrayLikeFloat_co,
  760. left: _FloatLike_co | None = None,
  761. right: _FloatLike_co | None = None,
  762. period: _FloatLike_co | None = None,
  763. ) -> _Array[_ShapeT, np.float64]: ...
  764. @overload # complex array
  765. def interp(
  766. x: _Array[_ShapeT, _floating_co],
  767. xp: _ArrayLikeFloat_co,
  768. fp: _ArrayLike1D[np.complexfloating] | list[complex],
  769. left: _NumberLike_co | None = None,
  770. right: _NumberLike_co | None = None,
  771. period: _FloatLike_co | None = None,
  772. ) -> _Array[_ShapeT, np.complex128]: ...
  773. @overload # float sequence
  774. def interp(
  775. x: _Seq1D[_FloatLike_co],
  776. xp: _ArrayLikeFloat_co,
  777. fp: _ArrayLikeFloat_co,
  778. left: _FloatLike_co | None = None,
  779. right: _FloatLike_co | None = None,
  780. period: _FloatLike_co | None = None,
  781. ) -> _Array1D[np.float64]: ...
  782. @overload # complex sequence
  783. def interp(
  784. x: _Seq1D[_FloatLike_co],
  785. xp: _ArrayLikeFloat_co,
  786. fp: _ArrayLike1D[np.complexfloating] | list[complex],
  787. left: _NumberLike_co | None = None,
  788. right: _NumberLike_co | None = None,
  789. period: _FloatLike_co | None = None,
  790. ) -> _Array1D[np.complex128]: ...
  791. @overload # float array-like
  792. def interp(
  793. x: _SeqND[_FloatLike_co],
  794. xp: _ArrayLikeFloat_co,
  795. fp: _ArrayLikeFloat_co,
  796. left: _FloatLike_co | None = None,
  797. right: _FloatLike_co | None = None,
  798. period: _FloatLike_co | None = None,
  799. ) -> NDArray[np.float64]: ...
  800. @overload # complex array-like
  801. def interp(
  802. x: _SeqND[_FloatLike_co],
  803. xp: _ArrayLikeFloat_co,
  804. fp: _ArrayLike1D[np.complexfloating] | list[complex],
  805. left: _NumberLike_co | None = None,
  806. right: _NumberLike_co | None = None,
  807. period: _FloatLike_co | None = None,
  808. ) -> NDArray[np.complex128]: ...
  809. @overload # float scalar/array-like
  810. def interp(
  811. x: _ArrayLikeFloat_co,
  812. xp: _ArrayLikeFloat_co,
  813. fp: _ArrayLikeFloat_co,
  814. left: _FloatLike_co | None = None,
  815. right: _FloatLike_co | None = None,
  816. period: _FloatLike_co | None = None,
  817. ) -> NDArray[np.float64] | np.float64: ...
  818. @overload # complex scalar/array-like
  819. def interp(
  820. x: _ArrayLikeFloat_co,
  821. xp: _ArrayLikeFloat_co,
  822. fp: _ArrayLike1D[np.complexfloating],
  823. left: _NumberLike_co | None = None,
  824. right: _NumberLike_co | None = None,
  825. period: _FloatLike_co | None = None,
  826. ) -> NDArray[np.complex128] | np.complex128: ...
  827. @overload # float/complex scalar/array-like
  828. def interp(
  829. x: _ArrayLikeFloat_co,
  830. xp: _ArrayLikeFloat_co,
  831. fp: _ArrayLikeNumber_co,
  832. left: _NumberLike_co | None = None,
  833. right: _NumberLike_co | None = None,
  834. period: _FloatLike_co | None = None,
  835. ) -> NDArray[np.complex128 | np.float64] | np.complex128 | np.float64: ...
  836. #
  837. @overload # 0d T: floating -> 0d T
  838. def angle(z: _FloatingT, deg: bool = False) -> _FloatingT: ...
  839. @overload # 0d complex | float | ~integer -> 0d float64
  840. def angle(z: complex | _integer_co, deg: bool = False) -> np.float64: ...
  841. @overload # 0d complex64 -> 0d float32
  842. def angle(z: np.complex64, deg: bool = False) -> np.float32: ...
  843. @overload # 0d clongdouble -> 0d longdouble
  844. def angle(z: np.clongdouble, deg: bool = False) -> np.longdouble: ...
  845. @overload # T: nd floating -> T
  846. def angle(z: _ArrayFloatingT, deg: bool = False) -> _ArrayFloatingT: ...
  847. @overload # nd T: complex128 | ~integer -> nd float64
  848. def angle(z: _Array[_ShapeT, np.complex128 | _integer_co], deg: bool = False) -> _Array[_ShapeT, np.float64]: ...
  849. @overload # nd T: complex64 -> nd float32
  850. def angle(z: _Array[_ShapeT, np.complex64], deg: bool = False) -> _Array[_ShapeT, np.float32]: ...
  851. @overload # nd T: clongdouble -> nd longdouble
  852. def angle(z: _Array[_ShapeT, np.clongdouble], deg: bool = False) -> _Array[_ShapeT, np.longdouble]: ...
  853. @overload # 1d complex -> 1d float64
  854. def angle(z: _Seq1D[complex], deg: bool = False) -> _Array1D[np.float64]: ...
  855. @overload # 2d complex -> 2d float64
  856. def angle(z: _Seq2D[complex], deg: bool = False) -> _Array2D[np.float64]: ...
  857. @overload # 3d complex -> 3d float64
  858. def angle(z: _Seq3D[complex], deg: bool = False) -> _Array3D[np.float64]: ...
  859. @overload # fallback
  860. def angle(z: _ArrayLikeComplex_co, deg: bool = False) -> NDArray[np.floating] | Any: ...
  861. #
  862. @overload # known array-type
  863. def unwrap(
  864. p: _ArrayFloatObjT,
  865. discont: float | None = None,
  866. axis: int = -1,
  867. *,
  868. period: float = ..., # = τ
  869. ) -> _ArrayFloatObjT: ...
  870. @overload # known shape, float64
  871. def unwrap(
  872. p: _Array[_ShapeT, _float64_co],
  873. discont: float | None = None,
  874. axis: int = -1,
  875. *,
  876. period: float = ..., # = τ
  877. ) -> _Array[_ShapeT, np.float64]: ...
  878. @overload # 1d float64-like
  879. def unwrap(
  880. p: _Seq1D[float | _float64_co],
  881. discont: float | None = None,
  882. axis: int = -1,
  883. *,
  884. period: float = ..., # = τ
  885. ) -> _Array1D[np.float64]: ...
  886. @overload # 2d float64-like
  887. def unwrap(
  888. p: _Seq2D[float | _float64_co],
  889. discont: float | None = None,
  890. axis: int = -1,
  891. *,
  892. period: float = ..., # = τ
  893. ) -> _Array2D[np.float64]: ...
  894. @overload # 3d float64-like
  895. def unwrap(
  896. p: _Seq3D[float | _float64_co],
  897. discont: float | None = None,
  898. axis: int = -1,
  899. *,
  900. period: float = ..., # = τ
  901. ) -> _Array3D[np.float64]: ...
  902. @overload # ?d, float64
  903. def unwrap(
  904. p: _SeqND[float] | _ArrayLike[_float64_co],
  905. discont: float | None = None,
  906. axis: int = -1,
  907. *,
  908. period: float = ..., # = τ
  909. ) -> NDArray[np.float64]: ...
  910. @overload # fallback
  911. def unwrap(
  912. p: _ArrayLikeFloat_co | _ArrayLikeObject_co,
  913. discont: float | None = None,
  914. axis: int = -1,
  915. *,
  916. period: float = ..., # = τ
  917. ) -> np.ndarray: ...
  918. #
  919. @overload
  920. def sort_complex(a: _ArrayComplexT) -> _ArrayComplexT: ...
  921. @overload # complex64, shape known
  922. def sort_complex(a: _Array[_ShapeT, np.int8 | np.uint8 | np.int16 | np.uint16]) -> _Array[_ShapeT, np.complex64]: ...
  923. @overload # complex64, shape unknown
  924. def sort_complex(a: _ArrayLike[np.int8 | np.uint8 | np.int16 | np.uint16]) -> NDArray[np.complex64]: ...
  925. @overload # complex128, shape known
  926. def sort_complex(a: _Array[_ShapeT, _SortsToComplex128]) -> _Array[_ShapeT, np.complex128]: ...
  927. @overload # complex128, shape unknown
  928. def sort_complex(a: _ArrayLike[_SortsToComplex128]) -> NDArray[np.complex128]: ...
  929. @overload # clongdouble, shape known
  930. def sort_complex(a: _Array[_ShapeT, np.longdouble]) -> _Array[_ShapeT, np.clongdouble]: ...
  931. @overload # clongdouble, shape unknown
  932. def sort_complex(a: _ArrayLike[np.longdouble]) -> NDArray[np.clongdouble]: ...
  933. #
  934. def trim_zeros(filt: _TrimZerosSequence[_T], trim: L["f", "b", "fb", "bf"] = "fb", axis: _ShapeLike | None = None) -> _T: ...
  935. # NOTE: keep in sync with `corrcoef`
  936. @overload # ?d, known inexact scalar-type >=64 precision, y=<given>.
  937. def cov(
  938. m: _ArrayLike[_AnyDoubleT],
  939. y: _ArrayLike[_AnyDoubleT],
  940. rowvar: bool = True,
  941. bias: bool = False,
  942. ddof: SupportsIndex | SupportsInt | None = None,
  943. fweights: _ArrayLikeInt_co | None = None,
  944. aweights: _ArrayLikeFloat_co | None = None,
  945. *,
  946. dtype: None = None,
  947. ) -> _Array2D[_AnyDoubleT]: ...
  948. @overload # ?d, known inexact scalar-type >=64 precision, y=None -> 0d or 2d
  949. def cov(
  950. m: _ArrayNoD[_AnyDoubleT],
  951. y: None = None,
  952. rowvar: bool = True,
  953. bias: bool = False,
  954. ddof: SupportsIndex | SupportsInt | None = None,
  955. fweights: _ArrayLikeInt_co | None = None,
  956. aweights: _ArrayLikeFloat_co | None = None,
  957. *,
  958. dtype: _DTypeLike[_AnyDoubleT] | None = None,
  959. ) -> NDArray[_AnyDoubleT]: ...
  960. @overload # 1d, known inexact scalar-type >=64 precision, y=None
  961. def cov(
  962. m: _Array1D[_AnyDoubleT],
  963. y: None = None,
  964. rowvar: bool = True,
  965. bias: bool = False,
  966. ddof: SupportsIndex | SupportsInt | None = None,
  967. fweights: _ArrayLikeInt_co | None = None,
  968. aweights: _ArrayLikeFloat_co | None = None,
  969. *,
  970. dtype: _DTypeLike[_AnyDoubleT] | None = None,
  971. ) -> _Array0D[_AnyDoubleT]: ...
  972. @overload # nd, known inexact scalar-type >=64 precision, y=None -> 0d or 2d
  973. def cov(
  974. m: _ArrayLike[_AnyDoubleT],
  975. y: None = None,
  976. rowvar: bool = True,
  977. bias: bool = False,
  978. ddof: SupportsIndex | SupportsInt | None = None,
  979. fweights: _ArrayLikeInt_co | None = None,
  980. aweights: _ArrayLikeFloat_co | None = None,
  981. *,
  982. dtype: _DTypeLike[_AnyDoubleT] | None = None,
  983. ) -> NDArray[_AnyDoubleT]: ...
  984. @overload # nd, casts to float64, y=<given>
  985. def cov(
  986. m: NDArray[np.float32 | np.float16 | _integer_co] | _Seq1D[float] | _Seq2D[float],
  987. y: NDArray[np.float32 | np.float16 | _integer_co] | _Seq1D[float] | _Seq2D[float],
  988. rowvar: bool = True,
  989. bias: bool = False,
  990. ddof: SupportsIndex | SupportsInt | None = None,
  991. fweights: _ArrayLikeInt_co | None = None,
  992. aweights: _ArrayLikeFloat_co | None = None,
  993. *,
  994. dtype: _DTypeLike[np.float64] | None = None,
  995. ) -> _Array2D[np.float64]: ...
  996. @overload # ?d or 2d, casts to float64, y=None -> 0d or 2d
  997. def cov(
  998. m: _ArrayNoD[np.float32 | np.float16 | _integer_co] | _Seq2D[float],
  999. y: None = None,
  1000. rowvar: bool = True,
  1001. bias: bool = False,
  1002. ddof: SupportsIndex | SupportsInt | None = None,
  1003. fweights: _ArrayLikeInt_co | None = None,
  1004. aweights: _ArrayLikeFloat_co | None = None,
  1005. *,
  1006. dtype: _DTypeLike[np.float64] | None = None,
  1007. ) -> NDArray[np.float64]: ...
  1008. @overload # 1d, casts to float64, y=None
  1009. def cov(
  1010. m: _Array1D[np.float32 | np.float16 | _integer_co] | _Seq1D[float],
  1011. y: None = None,
  1012. rowvar: bool = True,
  1013. bias: bool = False,
  1014. ddof: SupportsIndex | SupportsInt | None = None,
  1015. fweights: _ArrayLikeInt_co | None = None,
  1016. aweights: _ArrayLikeFloat_co | None = None,
  1017. *,
  1018. dtype: _DTypeLike[np.float64] | None = None,
  1019. ) -> _Array0D[np.float64]: ...
  1020. @overload # nd, casts to float64, y=None -> 0d or 2d
  1021. def cov(
  1022. m: _ArrayLike[np.float32 | np.float16 | _integer_co],
  1023. y: None = None,
  1024. rowvar: bool = True,
  1025. bias: bool = False,
  1026. ddof: SupportsIndex | SupportsInt | None = None,
  1027. fweights: _ArrayLikeInt_co | None = None,
  1028. aweights: _ArrayLikeFloat_co | None = None,
  1029. *,
  1030. dtype: _DTypeLike[np.float64] | None = None,
  1031. ) -> NDArray[np.float64]: ...
  1032. @overload # 1d complex, y=<given> (`list` avoids overlap with float overloads)
  1033. def cov(
  1034. m: list[complex] | _Seq1D[list[complex]],
  1035. y: list[complex] | _Seq1D[list[complex]],
  1036. rowvar: bool = True,
  1037. bias: bool = False,
  1038. ddof: SupportsIndex | SupportsInt | None = None,
  1039. fweights: _ArrayLikeInt_co | None = None,
  1040. aweights: _ArrayLikeFloat_co | None = None,
  1041. *,
  1042. dtype: _DTypeLike[np.complex128] | None = None,
  1043. ) -> _Array2D[np.complex128]: ...
  1044. @overload # 1d complex, y=None
  1045. def cov(
  1046. m: list[complex],
  1047. y: None = None,
  1048. rowvar: bool = True,
  1049. bias: bool = False,
  1050. ddof: SupportsIndex | SupportsInt | None = None,
  1051. fweights: _ArrayLikeInt_co | None = None,
  1052. aweights: _ArrayLikeFloat_co | None = None,
  1053. *,
  1054. dtype: _DTypeLike[np.complex128] | None = None,
  1055. ) -> _Array0D[np.complex128]: ...
  1056. @overload # 2d complex, y=None -> 0d or 2d
  1057. def cov(
  1058. m: _Seq1D[list[complex]],
  1059. y: None = None,
  1060. rowvar: bool = True,
  1061. bias: bool = False,
  1062. ddof: SupportsIndex | SupportsInt | None = None,
  1063. fweights: _ArrayLikeInt_co | None = None,
  1064. aweights: _ArrayLikeFloat_co | None = None,
  1065. *,
  1066. dtype: _DTypeLike[np.complex128] | None = None,
  1067. ) -> NDArray[np.complex128]: ...
  1068. @overload # 1d complex-like, y=None, dtype=<known>
  1069. def cov(
  1070. m: _Seq1D[_ComplexLike_co],
  1071. y: None = None,
  1072. rowvar: bool = True,
  1073. bias: bool = False,
  1074. ddof: SupportsIndex | SupportsInt | None = None,
  1075. fweights: _ArrayLikeInt_co | None = None,
  1076. aweights: _ArrayLikeFloat_co | None = None,
  1077. *,
  1078. dtype: _DTypeLike[_ScalarT],
  1079. ) -> _Array0D[_ScalarT]: ...
  1080. @overload # nd complex-like, y=<given>, dtype=<known>
  1081. def cov(
  1082. m: _ArrayLikeComplex_co,
  1083. y: _ArrayLikeComplex_co,
  1084. rowvar: bool = True,
  1085. bias: bool = False,
  1086. ddof: SupportsIndex | SupportsInt | None = None,
  1087. fweights: _ArrayLikeInt_co | None = None,
  1088. aweights: _ArrayLikeFloat_co | None = None,
  1089. *,
  1090. dtype: _DTypeLike[_ScalarT],
  1091. ) -> _Array2D[_ScalarT]: ...
  1092. @overload # nd complex-like, y=None, dtype=<known> -> 0d or 2d
  1093. def cov(
  1094. m: _ArrayLikeComplex_co,
  1095. y: None = None,
  1096. rowvar: bool = True,
  1097. bias: bool = False,
  1098. ddof: SupportsIndex | SupportsInt | None = None,
  1099. fweights: _ArrayLikeInt_co | None = None,
  1100. aweights: _ArrayLikeFloat_co | None = None,
  1101. *,
  1102. dtype: _DTypeLike[_ScalarT],
  1103. ) -> NDArray[_ScalarT]: ...
  1104. @overload # nd complex-like, y=<given>, dtype=?
  1105. def cov(
  1106. m: _ArrayLikeComplex_co,
  1107. y: _ArrayLikeComplex_co,
  1108. rowvar: bool = True,
  1109. bias: bool = False,
  1110. ddof: SupportsIndex | SupportsInt | None = None,
  1111. fweights: _ArrayLikeInt_co | None = None,
  1112. aweights: _ArrayLikeFloat_co | None = None,
  1113. *,
  1114. dtype: DTypeLike | None = None,
  1115. ) -> _Array2D[Incomplete]: ...
  1116. @overload # 1d complex-like, y=None, dtype=?
  1117. def cov(
  1118. m: _Seq1D[_ComplexLike_co],
  1119. y: None = None,
  1120. rowvar: bool = True,
  1121. bias: bool = False,
  1122. ddof: SupportsIndex | SupportsInt | None = None,
  1123. fweights: _ArrayLikeInt_co | None = None,
  1124. aweights: _ArrayLikeFloat_co | None = None,
  1125. *,
  1126. dtype: DTypeLike | None = None,
  1127. ) -> _Array0D[Incomplete]: ...
  1128. @overload # nd complex-like, dtype=?
  1129. def cov(
  1130. m: _ArrayLikeComplex_co,
  1131. y: _ArrayLikeComplex_co | None = None,
  1132. rowvar: bool = True,
  1133. bias: bool = False,
  1134. ddof: SupportsIndex | SupportsInt | None = None,
  1135. fweights: _ArrayLikeInt_co | None = None,
  1136. aweights: _ArrayLikeFloat_co | None = None,
  1137. *,
  1138. dtype: DTypeLike | None = None,
  1139. ) -> NDArray[Incomplete]: ...
  1140. # NOTE: If only `x` is given and the resulting array has shape (1,1), a bare scalar
  1141. # is returned instead of a 2D array. When y is given, a 2D array is always returned.
  1142. # This differs from `cov`, which returns 0-D arrays instead of scalars in such cases.
  1143. # NOTE: keep in sync with `cov`
  1144. @overload # ?d, known inexact scalar-type >=64 precision, y=<given>.
  1145. def corrcoef(
  1146. x: _ArrayLike[_AnyDoubleT],
  1147. y: _ArrayLike[_AnyDoubleT],
  1148. rowvar: bool = True,
  1149. *,
  1150. dtype: _DTypeLike[_AnyDoubleT] | None = None,
  1151. ) -> _Array2D[_AnyDoubleT]: ...
  1152. @overload # ?d, known inexact scalar-type >=64 precision, y=None
  1153. def corrcoef(
  1154. x: _ArrayNoD[_AnyDoubleT],
  1155. y: None = None,
  1156. rowvar: bool = True,
  1157. *,
  1158. dtype: _DTypeLike[_AnyDoubleT] | None = None,
  1159. ) -> _Array2D[_AnyDoubleT] | _AnyDoubleT: ...
  1160. @overload # 1d, known inexact scalar-type >=64 precision, y=None
  1161. def corrcoef(
  1162. x: _Array1D[_AnyDoubleT],
  1163. y: None = None,
  1164. rowvar: bool = True,
  1165. *,
  1166. dtype: _DTypeLike[_AnyDoubleT] | None = None,
  1167. ) -> _AnyDoubleT: ...
  1168. @overload # nd, known inexact scalar-type >=64 precision, y=None
  1169. def corrcoef(
  1170. x: _ArrayLike[_AnyDoubleT],
  1171. y: None = None,
  1172. rowvar: bool = True,
  1173. *,
  1174. dtype: _DTypeLike[_AnyDoubleT] | None = None,
  1175. ) -> _Array2D[_AnyDoubleT] | _AnyDoubleT: ...
  1176. @overload # nd, casts to float64, y=<given>
  1177. def corrcoef(
  1178. x: NDArray[np.float32 | np.float16 | _integer_co] | _Seq1D[float] | _Seq2D[float],
  1179. y: NDArray[np.float32 | np.float16 | _integer_co] | _Seq1D[float] | _Seq2D[float],
  1180. rowvar: bool = True,
  1181. *,
  1182. dtype: _DTypeLike[np.float64] | None = None,
  1183. ) -> _Array2D[np.float64]: ...
  1184. @overload # ?d or 2d, casts to float64, y=None
  1185. def corrcoef(
  1186. x: _ArrayNoD[np.float32 | np.float16 | _integer_co] | _Seq2D[float],
  1187. y: None = None,
  1188. rowvar: bool = True,
  1189. *,
  1190. dtype: _DTypeLike[np.float64] | None = None,
  1191. ) -> _Array2D[np.float64] | np.float64: ...
  1192. @overload # 1d, casts to float64, y=None
  1193. def corrcoef(
  1194. x: _Array1D[np.float32 | np.float16 | _integer_co] | _Seq1D[float],
  1195. y: None = None,
  1196. rowvar: bool = True,
  1197. *,
  1198. dtype: _DTypeLike[np.float64] | None = None,
  1199. ) -> np.float64: ...
  1200. @overload # nd, casts to float64, y=None
  1201. def corrcoef(
  1202. x: _ArrayLike[np.float32 | np.float16 | _integer_co],
  1203. y: None = None,
  1204. rowvar: bool = True,
  1205. *,
  1206. dtype: _DTypeLike[np.float64] | None = None,
  1207. ) -> _Array2D[np.float64] | np.float64: ...
  1208. @overload # 1d complex, y=<given> (`list` avoids overlap with float overloads)
  1209. def corrcoef(
  1210. x: list[complex] | _Seq1D[list[complex]],
  1211. y: list[complex] | _Seq1D[list[complex]],
  1212. rowvar: bool = True,
  1213. *,
  1214. dtype: _DTypeLike[np.complex128] | None = None,
  1215. ) -> _Array2D[np.complex128]: ...
  1216. @overload # 1d complex, y=None
  1217. def corrcoef(
  1218. x: list[complex],
  1219. y: None = None,
  1220. rowvar: bool = True,
  1221. *,
  1222. dtype: _DTypeLike[np.complex128] | None = None,
  1223. ) -> np.complex128: ...
  1224. @overload # 2d complex, y=None
  1225. def corrcoef(
  1226. x: _Seq1D[list[complex]],
  1227. y: None = None,
  1228. rowvar: bool = True,
  1229. *,
  1230. dtype: _DTypeLike[np.complex128] | None = None,
  1231. ) -> _Array2D[np.complex128] | np.complex128: ...
  1232. @overload # 1d complex-like, y=None, dtype=<known>
  1233. def corrcoef(
  1234. x: _Seq1D[_ComplexLike_co],
  1235. y: None = None,
  1236. rowvar: bool = True,
  1237. *,
  1238. dtype: _DTypeLike[_ScalarT],
  1239. ) -> _ScalarT: ...
  1240. @overload # nd complex-like, y=<given>, dtype=<known>
  1241. def corrcoef(
  1242. x: _ArrayLikeComplex_co,
  1243. y: _ArrayLikeComplex_co,
  1244. rowvar: bool = True,
  1245. *,
  1246. dtype: _DTypeLike[_ScalarT],
  1247. ) -> _Array2D[_ScalarT]: ...
  1248. @overload # nd complex-like, y=None, dtype=<known>
  1249. def corrcoef(
  1250. x: _ArrayLikeComplex_co,
  1251. y: None = None,
  1252. rowvar: bool = True,
  1253. *,
  1254. dtype: _DTypeLike[_ScalarT],
  1255. ) -> _Array2D[_ScalarT] | _ScalarT: ...
  1256. @overload # nd complex-like, y=<given>, dtype=?
  1257. def corrcoef(
  1258. x: _ArrayLikeComplex_co,
  1259. y: _ArrayLikeComplex_co,
  1260. rowvar: bool = True,
  1261. *,
  1262. dtype: DTypeLike | None = None,
  1263. ) -> _Array2D[Incomplete]: ...
  1264. @overload # 1d complex-like, y=None, dtype=?
  1265. def corrcoef(
  1266. x: _Seq1D[_ComplexLike_co],
  1267. y: None = None,
  1268. rowvar: bool = True,
  1269. *,
  1270. dtype: DTypeLike | None = None,
  1271. ) -> Incomplete: ...
  1272. @overload # nd complex-like, dtype=?
  1273. def corrcoef(
  1274. x: _ArrayLikeComplex_co,
  1275. y: _ArrayLikeComplex_co | None = None,
  1276. rowvar: bool = True,
  1277. *,
  1278. dtype: DTypeLike | None = None,
  1279. ) -> _Array2D[Incomplete] | Incomplete: ...
  1280. # note that floating `M` are accepted, but their fractional part is ignored
  1281. def blackman(M: _FloatLike_co) -> _Array1D[np.float64]: ...
  1282. def bartlett(M: _FloatLike_co) -> _Array1D[np.float64]: ...
  1283. def hanning(M: _FloatLike_co) -> _Array1D[np.float64]: ...
  1284. def hamming(M: _FloatLike_co) -> _Array1D[np.float64]: ...
  1285. def kaiser(M: _FloatLike_co, beta: _FloatLike_co) -> _Array1D[np.float64]: ...
  1286. #
  1287. @overload
  1288. def i0(x: _Array[_ShapeT, np.floating | np.integer]) -> _Array[_ShapeT, np.float64]: ...
  1289. @overload
  1290. def i0(x: _FloatLike_co) -> _Array0D[np.float64]: ...
  1291. @overload
  1292. def i0(x: _Seq1D[_FloatLike_co]) -> _Array1D[np.float64]: ...
  1293. @overload
  1294. def i0(x: _Seq2D[_FloatLike_co]) -> _Array2D[np.float64]: ...
  1295. @overload
  1296. def i0(x: _Seq3D[_FloatLike_co]) -> _Array3D[np.float64]: ...
  1297. @overload
  1298. def i0(x: _ArrayLikeFloat_co) -> NDArray[np.float64]: ...
  1299. #
  1300. @overload
  1301. def sinc(x: _InexactT) -> _InexactT: ...
  1302. @overload
  1303. def sinc(x: float | _float64_co) -> np.float64: ...
  1304. @overload
  1305. def sinc(x: complex) -> np.complex128 | Any: ...
  1306. @overload
  1307. def sinc(x: _ArrayInexactT) -> _ArrayInexactT: ...
  1308. @overload
  1309. def sinc(x: _Array[_ShapeT, _integer_co]) -> _Array[_ShapeT, np.float64]: ...
  1310. @overload
  1311. def sinc(x: _Seq1D[float]) -> _Array1D[np.float64]: ...
  1312. @overload
  1313. def sinc(x: _Seq2D[float]) -> _Array2D[np.float64]: ...
  1314. @overload
  1315. def sinc(x: _Seq3D[float]) -> _Array3D[np.float64]: ...
  1316. @overload
  1317. def sinc(x: _SeqND[float]) -> NDArray[np.float64]: ...
  1318. @overload
  1319. def sinc(x: list[complex]) -> _Array1D[np.complex128]: ...
  1320. @overload
  1321. def sinc(x: _Seq1D[list[complex]]) -> _Array2D[np.complex128]: ...
  1322. @overload
  1323. def sinc(x: _Seq2D[list[complex]]) -> _Array3D[np.complex128]: ...
  1324. @overload
  1325. def sinc(x: _ArrayLikeComplex_co) -> np.ndarray | Any: ...
  1326. # NOTE: We assume that `axis` is only provided for >=1-D arrays because for <1-D arrays
  1327. # it has no effect, and would complicate the overloads significantly.
  1328. @overload # known scalar-type, keepdims=False (default)
  1329. def median(
  1330. a: _ArrayLike[_InexactTimeT],
  1331. axis: None = None,
  1332. out: None = None,
  1333. overwrite_input: bool = False,
  1334. keepdims: L[False] = False,
  1335. ) -> _InexactTimeT: ...
  1336. @overload # float array-like, keepdims=False (default)
  1337. def median(
  1338. a: _ArrayLikeInt_co | _SeqND[float] | float,
  1339. axis: None = None,
  1340. out: None = None,
  1341. overwrite_input: bool = False,
  1342. keepdims: L[False] = False,
  1343. ) -> np.float64: ...
  1344. @overload # complex array-like, keepdims=False (default)
  1345. def median(
  1346. a: _ListSeqND[complex],
  1347. axis: None = None,
  1348. out: None = None,
  1349. overwrite_input: bool = False,
  1350. keepdims: L[False] = False,
  1351. ) -> np.complex128: ...
  1352. @overload # complex scalar, keepdims=False (default)
  1353. def median(
  1354. a: complex,
  1355. axis: None = None,
  1356. out: None = None,
  1357. overwrite_input: bool = False,
  1358. keepdims: L[False] = False,
  1359. ) -> np.complex128 | Any: ...
  1360. @overload # known array-type, keepdims=True
  1361. def median(
  1362. a: _ArrayNumericT,
  1363. axis: _ShapeLike | None = None,
  1364. out: None = None,
  1365. overwrite_input: bool = False,
  1366. *,
  1367. keepdims: L[True],
  1368. ) -> _ArrayNumericT: ...
  1369. @overload # known scalar-type, keepdims=True
  1370. def median(
  1371. a: _ArrayLike[_ScalarNumericT],
  1372. axis: _ShapeLike | None = None,
  1373. out: None = None,
  1374. overwrite_input: bool = False,
  1375. *,
  1376. keepdims: L[True],
  1377. ) -> NDArray[_ScalarNumericT]: ...
  1378. @overload # known scalar-type, axis=<given>
  1379. def median(
  1380. a: _ArrayLike[_ScalarNumericT],
  1381. axis: _ShapeLike,
  1382. out: None = None,
  1383. overwrite_input: bool = False,
  1384. keepdims: bool = False,
  1385. ) -> NDArray[_ScalarNumericT]: ...
  1386. @overload # float array-like, keepdims=True
  1387. def median(
  1388. a: _SeqND[float],
  1389. axis: _ShapeLike | None = None,
  1390. out: None = None,
  1391. overwrite_input: bool = False,
  1392. *,
  1393. keepdims: L[True],
  1394. ) -> NDArray[np.float64]: ...
  1395. @overload # float array-like, axis=<given>
  1396. def median(
  1397. a: _SeqND[float],
  1398. axis: _ShapeLike,
  1399. out: None = None,
  1400. overwrite_input: bool = False,
  1401. keepdims: bool = False,
  1402. ) -> NDArray[np.float64]: ...
  1403. @overload # complex array-like, keepdims=True
  1404. def median(
  1405. a: _ListSeqND[complex],
  1406. axis: _ShapeLike | None = None,
  1407. out: None = None,
  1408. overwrite_input: bool = False,
  1409. *,
  1410. keepdims: L[True],
  1411. ) -> NDArray[np.complex128]: ...
  1412. @overload # complex array-like, axis=<given>
  1413. def median(
  1414. a: _ListSeqND[complex],
  1415. axis: _ShapeLike,
  1416. out: None = None,
  1417. overwrite_input: bool = False,
  1418. keepdims: bool = False,
  1419. ) -> NDArray[np.complex128]: ...
  1420. @overload # out=<given> (keyword)
  1421. def median(
  1422. a: _ArrayLikeComplex_co | _ArrayLike[np.timedelta64 | np.object_],
  1423. axis: _ShapeLike | None = None,
  1424. *,
  1425. out: _ArrayT,
  1426. overwrite_input: bool = False,
  1427. keepdims: bool = False,
  1428. ) -> _ArrayT: ...
  1429. @overload # out=<given> (positional)
  1430. def median(
  1431. a: _ArrayLikeComplex_co | _ArrayLike[np.timedelta64 | np.object_],
  1432. axis: _ShapeLike | None,
  1433. out: _ArrayT,
  1434. overwrite_input: bool = False,
  1435. keepdims: bool = False,
  1436. ) -> _ArrayT: ...
  1437. @overload # fallback
  1438. def median(
  1439. a: _ArrayLikeComplex_co | _ArrayLike[np.timedelta64 | np.object_],
  1440. axis: _ShapeLike | None = None,
  1441. out: None = None,
  1442. overwrite_input: bool = False,
  1443. keepdims: bool = False,
  1444. ) -> Incomplete: ...
  1445. # NOTE: keep in sync with `quantile`
  1446. @overload # inexact, scalar, axis=None
  1447. def percentile(
  1448. a: _ArrayLike[_InexactDateTimeT],
  1449. q: _FloatLike_co,
  1450. axis: None = None,
  1451. out: None = None,
  1452. overwrite_input: bool = False,
  1453. method: _InterpolationMethod = "linear",
  1454. keepdims: L[False] = False,
  1455. *,
  1456. weights: _ArrayLikeFloat_co | None = None,
  1457. ) -> _InexactDateTimeT: ...
  1458. @overload # inexact, scalar, axis=<given>
  1459. def percentile(
  1460. a: _ArrayLike[_InexactDateTimeT],
  1461. q: _FloatLike_co,
  1462. axis: _ShapeLike,
  1463. out: None = None,
  1464. overwrite_input: bool = False,
  1465. method: _InterpolationMethod = "linear",
  1466. keepdims: L[False] = False,
  1467. *,
  1468. weights: _ArrayLikeFloat_co | None = None,
  1469. ) -> NDArray[_InexactDateTimeT]: ...
  1470. @overload # inexact, scalar, keepdims=True
  1471. def percentile(
  1472. a: _ArrayLike[_InexactDateTimeT],
  1473. q: _FloatLike_co,
  1474. axis: _ShapeLike | None = None,
  1475. out: None = None,
  1476. overwrite_input: bool = False,
  1477. method: _InterpolationMethod = "linear",
  1478. *,
  1479. keepdims: L[True],
  1480. weights: _ArrayLikeFloat_co | None = None,
  1481. ) -> NDArray[_InexactDateTimeT]: ...
  1482. @overload # inexact, array, axis=None
  1483. def percentile(
  1484. a: _ArrayLike[_InexactDateTimeT],
  1485. q: _Array[_ShapeT, _floating_co],
  1486. axis: None = None,
  1487. out: None = None,
  1488. overwrite_input: bool = False,
  1489. method: _InterpolationMethod = "linear",
  1490. keepdims: L[False] = False,
  1491. *,
  1492. weights: _ArrayLikeFloat_co | None = None,
  1493. ) -> _Array[_ShapeT, _InexactDateTimeT]: ...
  1494. @overload # inexact, array-like
  1495. def percentile(
  1496. a: _ArrayLike[_InexactDateTimeT],
  1497. q: NDArray[_floating_co] | _SeqND[_FloatLike_co],
  1498. axis: _ShapeLike | None = None,
  1499. out: None = None,
  1500. overwrite_input: bool = False,
  1501. method: _InterpolationMethod = "linear",
  1502. keepdims: bool = False,
  1503. *,
  1504. weights: _ArrayLikeFloat_co | None = None,
  1505. ) -> NDArray[_InexactDateTimeT]: ...
  1506. @overload # float, scalar, axis=None
  1507. def percentile(
  1508. a: _SeqND[float] | _ArrayLikeInt_co,
  1509. q: _FloatLike_co,
  1510. axis: None = None,
  1511. out: None = None,
  1512. overwrite_input: bool = False,
  1513. method: _InterpolationMethod = "linear",
  1514. keepdims: L[False] = False,
  1515. *,
  1516. weights: _ArrayLikeFloat_co | None = None,
  1517. ) -> np.float64: ...
  1518. @overload # float, scalar, axis=<given>
  1519. def percentile(
  1520. a: _SeqND[float] | _ArrayLikeInt_co,
  1521. q: _FloatLike_co,
  1522. axis: _ShapeLike,
  1523. out: None = None,
  1524. overwrite_input: bool = False,
  1525. method: _InterpolationMethod = "linear",
  1526. keepdims: L[False] = False,
  1527. *,
  1528. weights: _ArrayLikeFloat_co | None = None,
  1529. ) -> NDArray[np.float64]: ...
  1530. @overload # float, scalar, keepdims=True
  1531. def percentile(
  1532. a: _SeqND[float] | _ArrayLikeInt_co,
  1533. q: _FloatLike_co,
  1534. axis: _ShapeLike | None = None,
  1535. out: None = None,
  1536. overwrite_input: bool = False,
  1537. method: _InterpolationMethod = "linear",
  1538. *,
  1539. keepdims: L[True],
  1540. weights: _ArrayLikeFloat_co | None = None,
  1541. ) -> NDArray[np.float64]: ...
  1542. @overload # float, array, axis=None
  1543. def percentile(
  1544. a: _SeqND[float] | _ArrayLikeInt_co,
  1545. q: _Array[_ShapeT, _floating_co],
  1546. axis: None = None,
  1547. out: None = None,
  1548. overwrite_input: bool = False,
  1549. method: _InterpolationMethod = "linear",
  1550. keepdims: L[False] = False,
  1551. *,
  1552. weights: _ArrayLikeFloat_co | None = None,
  1553. ) -> _Array[_ShapeT, np.float64]: ...
  1554. @overload # float, array-like
  1555. def percentile(
  1556. a: _SeqND[float] | _ArrayLikeInt_co,
  1557. q: NDArray[_floating_co] | _SeqND[_FloatLike_co],
  1558. axis: _ShapeLike | None = None,
  1559. out: None = None,
  1560. overwrite_input: bool = False,
  1561. method: _InterpolationMethod = "linear",
  1562. keepdims: bool = False,
  1563. *,
  1564. weights: _ArrayLikeFloat_co | None = None,
  1565. ) -> NDArray[np.float64]: ...
  1566. @overload # complex, scalar, axis=None
  1567. def percentile(
  1568. a: _ListSeqND[complex],
  1569. q: _FloatLike_co,
  1570. axis: None = None,
  1571. out: None = None,
  1572. overwrite_input: bool = False,
  1573. method: _InterpolationMethod = "linear",
  1574. keepdims: L[False] = False,
  1575. *,
  1576. weights: _ArrayLikeFloat_co | None = None,
  1577. ) -> np.complex128: ...
  1578. @overload # complex, scalar, axis=<given>
  1579. def percentile(
  1580. a: _ListSeqND[complex],
  1581. q: _FloatLike_co,
  1582. axis: _ShapeLike,
  1583. out: None = None,
  1584. overwrite_input: bool = False,
  1585. method: _InterpolationMethod = "linear",
  1586. keepdims: L[False] = False,
  1587. *,
  1588. weights: _ArrayLikeFloat_co | None = None,
  1589. ) -> NDArray[np.complex128]: ...
  1590. @overload # complex, scalar, keepdims=True
  1591. def percentile(
  1592. a: _ListSeqND[complex],
  1593. q: _FloatLike_co,
  1594. axis: _ShapeLike | None = None,
  1595. out: None = None,
  1596. overwrite_input: bool = False,
  1597. method: _InterpolationMethod = "linear",
  1598. *,
  1599. keepdims: L[True],
  1600. weights: _ArrayLikeFloat_co | None = None,
  1601. ) -> NDArray[np.complex128]: ...
  1602. @overload # complex, array, axis=None
  1603. def percentile(
  1604. a: _ListSeqND[complex],
  1605. q: _Array[_ShapeT, _floating_co],
  1606. axis: None = None,
  1607. out: None = None,
  1608. overwrite_input: bool = False,
  1609. method: _InterpolationMethod = "linear",
  1610. keepdims: L[False] = False,
  1611. *,
  1612. weights: _ArrayLikeFloat_co | None = None,
  1613. ) -> _Array[_ShapeT, np.complex128]: ...
  1614. @overload # complex, array-like
  1615. def percentile(
  1616. a: _ListSeqND[complex],
  1617. q: NDArray[_floating_co] | _SeqND[_FloatLike_co],
  1618. axis: _ShapeLike | None = None,
  1619. out: None = None,
  1620. overwrite_input: bool = False,
  1621. method: _InterpolationMethod = "linear",
  1622. keepdims: bool = False,
  1623. *,
  1624. weights: _ArrayLikeFloat_co | None = None,
  1625. ) -> NDArray[np.complex128]: ...
  1626. @overload # object_, scalar, axis=None
  1627. def percentile(
  1628. a: _ArrayLikeObject_co,
  1629. q: _FloatLike_co,
  1630. axis: None = None,
  1631. out: None = None,
  1632. overwrite_input: bool = False,
  1633. method: _InterpolationMethod = "linear",
  1634. keepdims: L[False] = False,
  1635. *,
  1636. weights: _ArrayLikeFloat_co | None = None,
  1637. ) -> Any: ...
  1638. @overload # object_, scalar, axis=<given>
  1639. def percentile(
  1640. a: _ArrayLikeObject_co,
  1641. q: _FloatLike_co,
  1642. axis: _ShapeLike,
  1643. out: None = None,
  1644. overwrite_input: bool = False,
  1645. method: _InterpolationMethod = "linear",
  1646. keepdims: L[False] = False,
  1647. *,
  1648. weights: _ArrayLikeFloat_co | None = None,
  1649. ) -> NDArray[np.object_]: ...
  1650. @overload # object_, scalar, keepdims=True
  1651. def percentile(
  1652. a: _ArrayLikeObject_co,
  1653. q: _FloatLike_co,
  1654. axis: _ShapeLike | None = None,
  1655. out: None = None,
  1656. overwrite_input: bool = False,
  1657. method: _InterpolationMethod = "linear",
  1658. *,
  1659. keepdims: L[True],
  1660. weights: _ArrayLikeFloat_co | None = None,
  1661. ) -> NDArray[np.object_]: ...
  1662. @overload # object_, array, axis=None
  1663. def percentile(
  1664. a: _ArrayLikeObject_co,
  1665. q: _Array[_ShapeT, _floating_co],
  1666. axis: None = None,
  1667. out: None = None,
  1668. overwrite_input: bool = False,
  1669. method: _InterpolationMethod = "linear",
  1670. keepdims: L[False] = False,
  1671. *,
  1672. weights: _ArrayLikeFloat_co | None = None,
  1673. ) -> _Array[_ShapeT, np.object_]: ...
  1674. @overload # object_, array-like
  1675. def percentile(
  1676. a: _ArrayLikeObject_co,
  1677. q: NDArray[_floating_co] | _SeqND[_FloatLike_co],
  1678. axis: _ShapeLike | None = None,
  1679. out: None = None,
  1680. overwrite_input: bool = False,
  1681. method: _InterpolationMethod = "linear",
  1682. keepdims: bool = False,
  1683. *,
  1684. weights: _ArrayLikeFloat_co | None = None,
  1685. ) -> NDArray[np.object_]: ...
  1686. @overload # out=<given> (keyword)
  1687. def percentile(
  1688. a: ArrayLike,
  1689. q: _ArrayLikeFloat_co,
  1690. axis: _ShapeLike | None,
  1691. out: _ArrayT,
  1692. overwrite_input: bool = False,
  1693. method: _InterpolationMethod = "linear",
  1694. keepdims: bool = False,
  1695. *,
  1696. weights: _ArrayLikeFloat_co | None = None,
  1697. ) -> _ArrayT: ...
  1698. @overload # out=<given> (positional)
  1699. def percentile(
  1700. a: ArrayLike,
  1701. q: _ArrayLikeFloat_co,
  1702. axis: _ShapeLike | None = None,
  1703. *,
  1704. out: _ArrayT,
  1705. overwrite_input: bool = False,
  1706. method: _InterpolationMethod = "linear",
  1707. keepdims: bool = False,
  1708. weights: _ArrayLikeFloat_co | None = None,
  1709. ) -> _ArrayT: ...
  1710. @overload # fallback
  1711. def percentile(
  1712. a: _ArrayLikeNumber_co | _ArrayLikeObject_co,
  1713. q: _ArrayLikeFloat_co,
  1714. axis: _ShapeLike | None = None,
  1715. out: None = None,
  1716. overwrite_input: bool = False,
  1717. method: _InterpolationMethod = "linear",
  1718. keepdims: bool = False,
  1719. *,
  1720. weights: _ArrayLikeFloat_co | None = None,
  1721. ) -> Incomplete: ...
  1722. # NOTE: keep in sync with `percentile`
  1723. @overload # inexact, scalar, axis=None
  1724. def quantile(
  1725. a: _ArrayLike[_InexactDateTimeT],
  1726. q: _FloatLike_co,
  1727. axis: None = None,
  1728. out: None = None,
  1729. overwrite_input: bool = False,
  1730. method: _InterpolationMethod = "linear",
  1731. keepdims: L[False] = False,
  1732. *,
  1733. weights: _ArrayLikeFloat_co | None = None,
  1734. ) -> _InexactDateTimeT: ...
  1735. @overload # inexact, scalar, axis=<given>
  1736. def quantile(
  1737. a: _ArrayLike[_InexactDateTimeT],
  1738. q: _FloatLike_co,
  1739. axis: _ShapeLike,
  1740. out: None = None,
  1741. overwrite_input: bool = False,
  1742. method: _InterpolationMethod = "linear",
  1743. keepdims: L[False] = False,
  1744. *,
  1745. weights: _ArrayLikeFloat_co | None = None,
  1746. ) -> NDArray[_InexactDateTimeT]: ...
  1747. @overload # inexact, scalar, keepdims=True
  1748. def quantile(
  1749. a: _ArrayLike[_InexactDateTimeT],
  1750. q: _FloatLike_co,
  1751. axis: _ShapeLike | None = None,
  1752. out: None = None,
  1753. overwrite_input: bool = False,
  1754. method: _InterpolationMethod = "linear",
  1755. *,
  1756. keepdims: L[True],
  1757. weights: _ArrayLikeFloat_co | None = None,
  1758. ) -> NDArray[_InexactDateTimeT]: ...
  1759. @overload # inexact, array, axis=None
  1760. def quantile(
  1761. a: _ArrayLike[_InexactDateTimeT],
  1762. q: _Array[_ShapeT, _floating_co],
  1763. axis: None = None,
  1764. out: None = None,
  1765. overwrite_input: bool = False,
  1766. method: _InterpolationMethod = "linear",
  1767. keepdims: L[False] = False,
  1768. *,
  1769. weights: _ArrayLikeFloat_co | None = None,
  1770. ) -> _Array[_ShapeT, _InexactDateTimeT]: ...
  1771. @overload # inexact, array-like
  1772. def quantile(
  1773. a: _ArrayLike[_InexactDateTimeT],
  1774. q: NDArray[_floating_co] | _SeqND[_FloatLike_co],
  1775. axis: _ShapeLike | None = None,
  1776. out: None = None,
  1777. overwrite_input: bool = False,
  1778. method: _InterpolationMethod = "linear",
  1779. keepdims: bool = False,
  1780. *,
  1781. weights: _ArrayLikeFloat_co | None = None,
  1782. ) -> NDArray[_InexactDateTimeT]: ...
  1783. @overload # float, scalar, axis=None
  1784. def quantile(
  1785. a: _SeqND[float] | _ArrayLikeInt_co,
  1786. q: _FloatLike_co,
  1787. axis: None = None,
  1788. out: None = None,
  1789. overwrite_input: bool = False,
  1790. method: _InterpolationMethod = "linear",
  1791. keepdims: L[False] = False,
  1792. *,
  1793. weights: _ArrayLikeFloat_co | None = None,
  1794. ) -> np.float64: ...
  1795. @overload # float, scalar, axis=<given>
  1796. def quantile(
  1797. a: _SeqND[float] | _ArrayLikeInt_co,
  1798. q: _FloatLike_co,
  1799. axis: _ShapeLike,
  1800. out: None = None,
  1801. overwrite_input: bool = False,
  1802. method: _InterpolationMethod = "linear",
  1803. keepdims: L[False] = False,
  1804. *,
  1805. weights: _ArrayLikeFloat_co | None = None,
  1806. ) -> NDArray[np.float64]: ...
  1807. @overload # float, scalar, keepdims=True
  1808. def quantile(
  1809. a: _SeqND[float] | _ArrayLikeInt_co,
  1810. q: _FloatLike_co,
  1811. axis: _ShapeLike | None = None,
  1812. out: None = None,
  1813. overwrite_input: bool = False,
  1814. method: _InterpolationMethod = "linear",
  1815. *,
  1816. keepdims: L[True],
  1817. weights: _ArrayLikeFloat_co | None = None,
  1818. ) -> NDArray[np.float64]: ...
  1819. @overload # float, array, axis=None
  1820. def quantile(
  1821. a: _SeqND[float] | _ArrayLikeInt_co,
  1822. q: _Array[_ShapeT, _floating_co],
  1823. axis: None = None,
  1824. out: None = None,
  1825. overwrite_input: bool = False,
  1826. method: _InterpolationMethod = "linear",
  1827. keepdims: L[False] = False,
  1828. *,
  1829. weights: _ArrayLikeFloat_co | None = None,
  1830. ) -> _Array[_ShapeT, np.float64]: ...
  1831. @overload # float, array-like
  1832. def quantile(
  1833. a: _SeqND[float] | _ArrayLikeInt_co,
  1834. q: NDArray[_floating_co] | _SeqND[_FloatLike_co],
  1835. axis: _ShapeLike | None = None,
  1836. out: None = None,
  1837. overwrite_input: bool = False,
  1838. method: _InterpolationMethod = "linear",
  1839. keepdims: bool = False,
  1840. *,
  1841. weights: _ArrayLikeFloat_co | None = None,
  1842. ) -> NDArray[np.float64]: ...
  1843. @overload # complex, scalar, axis=None
  1844. def quantile(
  1845. a: _ListSeqND[complex],
  1846. q: _FloatLike_co,
  1847. axis: None = None,
  1848. out: None = None,
  1849. overwrite_input: bool = False,
  1850. method: _InterpolationMethod = "linear",
  1851. keepdims: L[False] = False,
  1852. *,
  1853. weights: _ArrayLikeFloat_co | None = None,
  1854. ) -> np.complex128: ...
  1855. @overload # complex, scalar, axis=<given>
  1856. def quantile(
  1857. a: _ListSeqND[complex],
  1858. q: _FloatLike_co,
  1859. axis: _ShapeLike,
  1860. out: None = None,
  1861. overwrite_input: bool = False,
  1862. method: _InterpolationMethod = "linear",
  1863. keepdims: L[False] = False,
  1864. *,
  1865. weights: _ArrayLikeFloat_co | None = None,
  1866. ) -> NDArray[np.complex128]: ...
  1867. @overload # complex, scalar, keepdims=True
  1868. def quantile(
  1869. a: _ListSeqND[complex],
  1870. q: _FloatLike_co,
  1871. axis: _ShapeLike | None = None,
  1872. out: None = None,
  1873. overwrite_input: bool = False,
  1874. method: _InterpolationMethod = "linear",
  1875. *,
  1876. keepdims: L[True],
  1877. weights: _ArrayLikeFloat_co | None = None,
  1878. ) -> NDArray[np.complex128]: ...
  1879. @overload # complex, array, axis=None
  1880. def quantile(
  1881. a: _ListSeqND[complex],
  1882. q: _Array[_ShapeT, _floating_co],
  1883. axis: None = None,
  1884. out: None = None,
  1885. overwrite_input: bool = False,
  1886. method: _InterpolationMethod = "linear",
  1887. keepdims: L[False] = False,
  1888. *,
  1889. weights: _ArrayLikeFloat_co | None = None,
  1890. ) -> _Array[_ShapeT, np.complex128]: ...
  1891. @overload # complex, array-like
  1892. def quantile(
  1893. a: _ListSeqND[complex],
  1894. q: NDArray[_floating_co] | _SeqND[_FloatLike_co],
  1895. axis: _ShapeLike | None = None,
  1896. out: None = None,
  1897. overwrite_input: bool = False,
  1898. method: _InterpolationMethod = "linear",
  1899. keepdims: bool = False,
  1900. *,
  1901. weights: _ArrayLikeFloat_co | None = None,
  1902. ) -> NDArray[np.complex128]: ...
  1903. @overload # object_, scalar, axis=None
  1904. def quantile(
  1905. a: _ArrayLikeObject_co,
  1906. q: _FloatLike_co,
  1907. axis: None = None,
  1908. out: None = None,
  1909. overwrite_input: bool = False,
  1910. method: _InterpolationMethod = "linear",
  1911. keepdims: L[False] = False,
  1912. *,
  1913. weights: _ArrayLikeFloat_co | None = None,
  1914. ) -> Any: ...
  1915. @overload # object_, scalar, axis=<given>
  1916. def quantile(
  1917. a: _ArrayLikeObject_co,
  1918. q: _FloatLike_co,
  1919. axis: _ShapeLike,
  1920. out: None = None,
  1921. overwrite_input: bool = False,
  1922. method: _InterpolationMethod = "linear",
  1923. keepdims: L[False] = False,
  1924. *,
  1925. weights: _ArrayLikeFloat_co | None = None,
  1926. ) -> NDArray[np.object_]: ...
  1927. @overload # object_, scalar, keepdims=True
  1928. def quantile(
  1929. a: _ArrayLikeObject_co,
  1930. q: _FloatLike_co,
  1931. axis: _ShapeLike | None = None,
  1932. out: None = None,
  1933. overwrite_input: bool = False,
  1934. method: _InterpolationMethod = "linear",
  1935. *,
  1936. keepdims: L[True],
  1937. weights: _ArrayLikeFloat_co | None = None,
  1938. ) -> NDArray[np.object_]: ...
  1939. @overload # object_, array, axis=None
  1940. def quantile(
  1941. a: _ArrayLikeObject_co,
  1942. q: _Array[_ShapeT, _floating_co],
  1943. axis: None = None,
  1944. out: None = None,
  1945. overwrite_input: bool = False,
  1946. method: _InterpolationMethod = "linear",
  1947. keepdims: L[False] = False,
  1948. *,
  1949. weights: _ArrayLikeFloat_co | None = None,
  1950. ) -> _Array[_ShapeT, np.object_]: ...
  1951. @overload # object_, array-like
  1952. def quantile(
  1953. a: _ArrayLikeObject_co,
  1954. q: NDArray[_floating_co] | _SeqND[_FloatLike_co],
  1955. axis: _ShapeLike | None = None,
  1956. out: None = None,
  1957. overwrite_input: bool = False,
  1958. method: _InterpolationMethod = "linear",
  1959. keepdims: bool = False,
  1960. *,
  1961. weights: _ArrayLikeFloat_co | None = None,
  1962. ) -> NDArray[np.object_]: ...
  1963. @overload # out=<given> (keyword)
  1964. def quantile(
  1965. a: ArrayLike,
  1966. q: _ArrayLikeFloat_co,
  1967. axis: _ShapeLike | None,
  1968. out: _ArrayT,
  1969. overwrite_input: bool = False,
  1970. method: _InterpolationMethod = "linear",
  1971. keepdims: bool = False,
  1972. *,
  1973. weights: _ArrayLikeFloat_co | None = None,
  1974. ) -> _ArrayT: ...
  1975. @overload # out=<given> (positional)
  1976. def quantile(
  1977. a: ArrayLike,
  1978. q: _ArrayLikeFloat_co,
  1979. axis: _ShapeLike | None = None,
  1980. *,
  1981. out: _ArrayT,
  1982. overwrite_input: bool = False,
  1983. method: _InterpolationMethod = "linear",
  1984. keepdims: bool = False,
  1985. weights: _ArrayLikeFloat_co | None = None,
  1986. ) -> _ArrayT: ...
  1987. @overload # fallback
  1988. def quantile(
  1989. a: _ArrayLikeNumber_co | _ArrayLikeObject_co,
  1990. q: _ArrayLikeFloat_co,
  1991. axis: _ShapeLike | None = None,
  1992. out: None = None,
  1993. overwrite_input: bool = False,
  1994. method: _InterpolationMethod = "linear",
  1995. keepdims: bool = False,
  1996. *,
  1997. weights: _ArrayLikeFloat_co | None = None,
  1998. ) -> Incomplete: ...
  1999. #
  2000. @overload # ?d, known inexact/timedelta64 scalar-type
  2001. def trapezoid(
  2002. y: _ArrayNoD[_InexactTimeT],
  2003. x: _ArrayLike[_InexactTimeT] | _ArrayLikeFloat_co | None = None,
  2004. dx: float = 1.0,
  2005. axis: SupportsIndex = -1,
  2006. ) -> NDArray[_InexactTimeT] | _InexactTimeT: ...
  2007. @overload # ?d, casts to float64
  2008. def trapezoid(
  2009. y: _ArrayNoD[_integer_co],
  2010. x: _ArrayLikeFloat_co | None = None,
  2011. dx: float = 1.0,
  2012. axis: SupportsIndex = -1,
  2013. ) -> NDArray[np.float64] | np.float64: ...
  2014. @overload # strict 1d, known inexact/timedelta64 scalar-type
  2015. def trapezoid(
  2016. y: _Array1D[_InexactTimeT],
  2017. x: _Array1D[_InexactTimeT] | _Seq1D[float] | None = None,
  2018. dx: float = 1.0,
  2019. axis: SupportsIndex = -1,
  2020. ) -> _InexactTimeT: ...
  2021. @overload # strict 1d, casts to float64
  2022. def trapezoid(
  2023. y: _Array1D[_float64_co] | _Seq1D[float],
  2024. x: _Array1D[_float64_co] | _Seq1D[float] | None = None,
  2025. dx: float = 1.0,
  2026. axis: SupportsIndex = -1,
  2027. ) -> np.float64: ...
  2028. @overload # strict 1d, casts to complex128 (`list` prevents overlapping overloads)
  2029. def trapezoid(
  2030. y: list[complex],
  2031. x: _Seq1D[complex] | None = None,
  2032. dx: complex = 1.0,
  2033. axis: SupportsIndex = -1,
  2034. ) -> np.complex128: ...
  2035. @overload # strict 1d, casts to complex128
  2036. def trapezoid(
  2037. y: _Seq1D[complex],
  2038. x: list[complex],
  2039. dx: complex = 1.0,
  2040. axis: SupportsIndex = -1,
  2041. ) -> np.complex128: ...
  2042. @overload # strict 2d, known inexact/timedelta64 scalar-type
  2043. def trapezoid(
  2044. y: _Array2D[_InexactTimeT],
  2045. x: _ArrayMax2D[_InexactTimeT] | _Seq2D[float] | _Seq1D[float] | None = None,
  2046. dx: float = 1.0,
  2047. axis: SupportsIndex = -1,
  2048. ) -> _InexactTimeT: ...
  2049. @overload # strict 2d, casts to float64
  2050. def trapezoid(
  2051. y: _Array2D[_float64_co] | _Seq2D[float],
  2052. x: _ArrayMax2D[_float64_co] | _Seq2D[float] | _Seq1D[float] | None = None,
  2053. dx: float = 1.0,
  2054. axis: SupportsIndex = -1,
  2055. ) -> np.float64: ...
  2056. @overload # strict 2d, casts to complex128 (`list` prevents overlapping overloads)
  2057. def trapezoid(
  2058. y: _Seq1D[list[complex]],
  2059. x: _Seq2D[complex] | _Seq1D[complex] | None = None,
  2060. dx: complex = 1.0,
  2061. axis: SupportsIndex = -1,
  2062. ) -> np.complex128: ...
  2063. @overload # strict 2d, casts to complex128
  2064. def trapezoid(
  2065. y: _Seq2D[complex] | _Seq1D[complex],
  2066. x: _Seq1D[list[complex]],
  2067. dx: complex = 1.0,
  2068. axis: SupportsIndex = -1,
  2069. ) -> np.complex128: ...
  2070. @overload
  2071. def trapezoid(
  2072. y: _ArrayLike[_InexactTimeT],
  2073. x: _ArrayLike[_InexactTimeT] | _ArrayLikeInt_co | None = None,
  2074. dx: complex = 1.0,
  2075. axis: SupportsIndex = -1,
  2076. ) -> NDArray[_InexactTimeT] | _InexactTimeT: ...
  2077. @overload
  2078. def trapezoid(
  2079. y: _ArrayLike[_float64_co],
  2080. x: _ArrayLikeFloat_co | None = None,
  2081. dx: float = 1.0,
  2082. axis: SupportsIndex = -1,
  2083. ) -> NDArray[np.float64] | np.float64: ...
  2084. @overload
  2085. def trapezoid(
  2086. y: _ArrayLike[np.complex128],
  2087. x: _ArrayLikeComplex_co | None = None,
  2088. dx: float = 1.0,
  2089. axis: SupportsIndex = -1,
  2090. ) -> NDArray[np.complex128] | np.complex128: ...
  2091. @overload
  2092. def trapezoid(
  2093. y: _ArrayLikeComplex_co,
  2094. x: _ArrayLike[np.complex128],
  2095. dx: float = 1.0,
  2096. axis: SupportsIndex = -1,
  2097. ) -> NDArray[np.complex128] | np.complex128: ...
  2098. @overload
  2099. def trapezoid(
  2100. y: _ArrayLikeObject_co,
  2101. x: _ArrayLikeObject_co | _ArrayLikeFloat_co | None = None,
  2102. dx: float = 1.0,
  2103. axis: SupportsIndex = -1,
  2104. ) -> NDArray[np.object_] | Any: ...
  2105. @overload
  2106. def trapezoid(
  2107. y: _Seq1D[_SupportsRMulFloat[_T]],
  2108. x: _Seq1D[_SupportsRMulFloat[_T] | _T] | None = None,
  2109. dx: complex = 1.0,
  2110. axis: SupportsIndex = -1,
  2111. ) -> _T: ...
  2112. @overload
  2113. def trapezoid(
  2114. y: _ArrayLikeComplex_co | _ArrayLike[np.timedelta64 | np.object_],
  2115. x: _ArrayLikeComplex_co | _ArrayLike[np.timedelta64 | np.object_] | None = None,
  2116. dx: complex = 1.0,
  2117. axis: SupportsIndex = -1,
  2118. ) -> Incomplete: ...
  2119. #
  2120. @overload # 0d
  2121. def meshgrid(*, copy: bool = True, sparse: bool = False, indexing: _Indexing = "xy") -> tuple[()]: ...
  2122. @overload # 1d, known scalar-type
  2123. def meshgrid(
  2124. x1: _ArrayLike[_ScalarT],
  2125. /,
  2126. *,
  2127. copy: bool = True,
  2128. sparse: bool = False,
  2129. indexing: _Indexing = "xy",
  2130. ) -> _Mesh1[_ScalarT]: ...
  2131. @overload # 1d, unknown scalar-type
  2132. def meshgrid(
  2133. x1: ArrayLike,
  2134. /,
  2135. *,
  2136. copy: bool = True,
  2137. sparse: bool = False,
  2138. indexing: _Indexing = "xy",
  2139. ) -> _Mesh1[Any]: ...
  2140. @overload # 2d, known scalar-types
  2141. def meshgrid(
  2142. x1: _ArrayLike[_ScalarT],
  2143. x2: _ArrayLike[_ScalarT1],
  2144. /,
  2145. *,
  2146. copy: bool = True,
  2147. sparse: bool = False,
  2148. indexing: _Indexing = "xy",
  2149. ) -> _Mesh2[_ScalarT, _ScalarT1]: ...
  2150. @overload # 2d, known/unknown scalar-types
  2151. def meshgrid(
  2152. x1: _ArrayLike[_ScalarT],
  2153. x2: ArrayLike,
  2154. /,
  2155. *,
  2156. copy: bool = True,
  2157. sparse: bool = False,
  2158. indexing: _Indexing = "xy",
  2159. ) -> _Mesh2[_ScalarT, Any]: ...
  2160. @overload # 2d, unknown/known scalar-types
  2161. def meshgrid(
  2162. x1: ArrayLike,
  2163. x2: _ArrayLike[_ScalarT],
  2164. /,
  2165. *,
  2166. copy: bool = True,
  2167. sparse: bool = False,
  2168. indexing: _Indexing = "xy",
  2169. ) -> _Mesh2[Any, _ScalarT]: ...
  2170. @overload # 2d, unknown scalar-types
  2171. def meshgrid(
  2172. x1: ArrayLike,
  2173. x2: ArrayLike,
  2174. /,
  2175. *,
  2176. copy: bool = True,
  2177. sparse: bool = False,
  2178. indexing: _Indexing = "xy",
  2179. ) -> _Mesh2[Any, Any]: ...
  2180. @overload # 3d, known scalar-types
  2181. def meshgrid(
  2182. x1: _ArrayLike[_ScalarT],
  2183. x2: _ArrayLike[_ScalarT1],
  2184. x3: _ArrayLike[_ScalarT2],
  2185. /,
  2186. *,
  2187. copy: bool = True,
  2188. sparse: bool = False,
  2189. indexing: _Indexing = "xy",
  2190. ) -> _Mesh3[_ScalarT, _ScalarT1, _ScalarT2]: ...
  2191. @overload # 3d, unknown scalar-types
  2192. def meshgrid(
  2193. x1: ArrayLike,
  2194. x2: ArrayLike,
  2195. x3: ArrayLike,
  2196. /,
  2197. *,
  2198. copy: bool = True,
  2199. sparse: bool = False,
  2200. indexing: _Indexing = "xy",
  2201. ) -> _Mesh3[Any, Any, Any]: ...
  2202. @overload # ?d, known scalar-types
  2203. def meshgrid(
  2204. *xi: _ArrayLike[_ScalarT],
  2205. copy: bool = True,
  2206. sparse: bool = False,
  2207. indexing: _Indexing = "xy",
  2208. ) -> tuple[NDArray[_ScalarT], ...]: ...
  2209. @overload # ?d, unknown scalar-types
  2210. def meshgrid(
  2211. *xi: ArrayLike,
  2212. copy: bool = True,
  2213. sparse: bool = False,
  2214. indexing: _Indexing = "xy",
  2215. ) -> tuple[NDArray[Any], ...]: ...
  2216. #
  2217. def place(arr: np.ndarray, mask: ConvertibleToInt | Sequence[ConvertibleToInt], vals: ArrayLike) -> None: ...
  2218. # keep in sync with `insert`
  2219. @overload # known scalar-type, axis=None (default)
  2220. def delete(arr: _ArrayLike[_ScalarT], obj: _IndexLike, axis: None = None) -> _Array1D[_ScalarT]: ...
  2221. @overload # known array-type, axis specified
  2222. def delete(arr: _ArrayT, obj: _IndexLike, axis: SupportsIndex) -> _ArrayT: ...
  2223. @overload # known scalar-type, axis specified
  2224. def delete(arr: _ArrayLike[_ScalarT], obj: _IndexLike, axis: SupportsIndex) -> NDArray[_ScalarT]: ...
  2225. @overload # known scalar-type, axis=None (default)
  2226. def delete(arr: ArrayLike, obj: _IndexLike, axis: None = None) -> _Array1D[Any]: ...
  2227. @overload # unknown scalar-type, axis specified
  2228. def delete(arr: ArrayLike, obj: _IndexLike, axis: SupportsIndex) -> NDArray[Any]: ...
  2229. # keep in sync with `delete`
  2230. @overload # known scalar-type, axis=None (default)
  2231. def insert(arr: _ArrayLike[_ScalarT], obj: _IndexLike, values: ArrayLike, axis: None = None) -> _Array1D[_ScalarT]: ...
  2232. @overload # known array-type, axis specified
  2233. def insert(arr: _ArrayT, obj: _IndexLike, values: ArrayLike, axis: SupportsIndex) -> _ArrayT: ...
  2234. @overload # known scalar-type, axis specified
  2235. def insert(arr: _ArrayLike[_ScalarT], obj: _IndexLike, values: ArrayLike, axis: SupportsIndex) -> NDArray[_ScalarT]: ...
  2236. @overload # known scalar-type, axis=None (default)
  2237. def insert(arr: ArrayLike, obj: _IndexLike, values: ArrayLike, axis: None = None) -> _Array1D[Any]: ...
  2238. @overload # unknown scalar-type, axis specified
  2239. def insert(arr: ArrayLike, obj: _IndexLike, values: ArrayLike, axis: SupportsIndex) -> NDArray[Any]: ...
  2240. #
  2241. @overload # known array type, axis specified
  2242. def append(arr: _ArrayT, values: _ArrayT, axis: SupportsIndex) -> _ArrayT: ...
  2243. @overload # 1d, known scalar type, axis specified
  2244. def append(arr: _Seq1D[_ScalarT], values: _Seq1D[_ScalarT], axis: SupportsIndex) -> _Array1D[_ScalarT]: ...
  2245. @overload # 2d, known scalar type, axis specified
  2246. def append(arr: _Seq2D[_ScalarT], values: _Seq2D[_ScalarT], axis: SupportsIndex) -> _Array2D[_ScalarT]: ...
  2247. @overload # 3d, known scalar type, axis specified
  2248. def append(arr: _Seq3D[_ScalarT], values: _Seq3D[_ScalarT], axis: SupportsIndex) -> _Array3D[_ScalarT]: ...
  2249. @overload # ?d, known scalar type, axis specified
  2250. def append(arr: _SeqND[_ScalarT], values: _SeqND[_ScalarT], axis: SupportsIndex) -> NDArray[_ScalarT]: ...
  2251. @overload # ?d, unknown scalar type, axis specified
  2252. def append(arr: np.ndarray | _SeqND[_ScalarLike_co], values: _SeqND[_ScalarLike_co], axis: SupportsIndex) -> np.ndarray: ...
  2253. @overload # known scalar type, axis=None
  2254. def append(arr: _ArrayLike[_ScalarT], values: _ArrayLike[_ScalarT], axis: None = None) -> _Array1D[_ScalarT]: ...
  2255. @overload # unknown scalar type, axis=None
  2256. def append(arr: ArrayLike, values: ArrayLike, axis: None = None) -> _Array1D[Any]: ...
  2257. #
  2258. @overload
  2259. def digitize(
  2260. x: _Array[_ShapeT, np.floating | np.integer], bins: _ArrayLikeFloat_co, right: bool = False
  2261. ) -> _Array[_ShapeT, np.int_]: ...
  2262. @overload
  2263. def digitize(x: _FloatLike_co, bins: _ArrayLikeFloat_co, right: bool = False) -> np.int_: ...
  2264. @overload
  2265. def digitize(x: _Seq1D[_FloatLike_co], bins: _ArrayLikeFloat_co, right: bool = False) -> _Array1D[np.int_]: ...
  2266. @overload
  2267. def digitize(x: _Seq2D[_FloatLike_co], bins: _ArrayLikeFloat_co, right: bool = False) -> _Array2D[np.int_]: ...
  2268. @overload
  2269. def digitize(x: _Seq3D[_FloatLike_co], bins: _ArrayLikeFloat_co, right: bool = False) -> _Array3D[np.int_]: ...
  2270. @overload
  2271. def digitize(x: _ArrayLikeFloat_co, bins: _ArrayLikeFloat_co, right: bool = False) -> NDArray[np.int_] | Any: ...