Syntax for typing multi-dimensional arrays
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- À clarifier
- Activité
- À l'abandon
- Stack technique
- numpy, python
- Domaine
- developer-experience, tooling
Piste de recherche
Commencez par l’issue sur les tableaux multidimensionnels de plus grande taille (#513) et le document de conception associé, en particulier sa section « Possible syntax ». Comparez les formes proposées pour dtype et shape, y compris les arguments génériques et variadiques, et examinez la discussion existante. Le travail sera considéré comme terminé lorsqu’une syntaxe établie prenant en charge les cas optionnels et génériques indiqués aura été définie et documentée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
As part of the larger project for multi-dimensional arrays (https://github.com/python/typing/issues/513), one of the first questions I would like to settle is what syntax for typing data-types and shapes should look like.
Both dtype and shape should be optional, and it should be possible to define multi-dimensional arrays for which either or both of these are generic:
dtype: indicates the data type for array elements, e.g.,np.float64shape: indicates the shape of the multi-dimensional array, a tuple of zero or more integers. We would like to support integer and variable sized dimensions, and variable numbers of dimensions. These are most naturally represented with indexing by a variadic number of integer, variable, colon:and/or ellipsis...arguments, e.g.,NDArray[1, N, :, ...]for an array with dimensions of size 1, sizeN, and arbitrary size, followed by 0 or more arbitrary sized dimensions.
For NumPy, ideally we would like to add basic typing support for dtype (using Generic) even before typing for shape is possible. But we'd like to know what the ultimate syntax should look like, so we don't paint ourselves into a corner.
One key question: can we safely rely on using a single generic argument for dtypes (e.g., np.ndarray[np.float64]) as indicating an array without any shape constraints?
My doc (same as in the master issue) considers a number of options under the "Possible syntax" section.
So far, I think the best option is some variation of "two generic arguments", for dtype and shape. But this could quickly get annoyingly verbose when sprinkled all over a code-base, e.g., np.ndarray[np.float32, Shaped[..., N, M]]:
- It would be nice to support syntax like
np.ndarray[np.float32](the multi-dimensional equivalent ofList[float]) as an alias fornp.ndarray[np.float32, Any], but we don't yet have optional arguments for generics (variadic arguments are a somewhat awkward fit for a single argument). - It would also be nice to allow omitting
Shaped[], e.g., by writing dimensions as variadic generics to the array type likenp.ndarray[np.float32, ..., N, M]. One possible ambiguity is how to specify scalar arrays:np.ndarray[np.float32,]looks very similar tonp.ndarray[np.float32]. But scalar arrays are rare enough that these could potentially be resolved by disallowingnp.ndarray[np.float32,]in favor of requiringnp.ndarray[np.float32, Shape[()]].
- Langage dominant
- Python
- Étoiles
- 1.8k
- Forks
- 302
- Merge moyen
- 23 h
- PR mergées (30 j)
- 8
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de python/typing
-
topic: typing spec
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
topic: typing spec
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
topic: documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
-
topic: documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
-
topic: conformance tests topic: typing spec
Difficulté 3/5 1-2 jours Accessibilité débutants 72/100
Toutes les issues de python/typing
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
anthropics/skills#1811 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
speaches-ai/speaches#678 ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
datalayer/mcp-compose#42 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
conda-forge/spacy-feedstock#177 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
UKGovernmentBEIS/inspect_evals#2523 ·