Comment détecter la longueur d'un tableau numpy avec un seul élément?
Je suis de la lecture dans un fichier à l'aide de numpy.genfromtxt qui apporte dans les colonnes de deux chaînes de caractères et des valeurs numériques. Une chose que j'ai à faire est de détecter la longueur de l'entrée. Ce est tout très bien fourni il y a plus d'une valeur lue dans chaque groupe.
Mais...si il y a un seul élément dans le tableau qui en résulte, la logique d'échec. Je peux recréer un exemple ici:
import numpy as np
a = np.array(2.3)
len () renvoie un message d'erreur disant:
TypeError: len() of unsized object
cependant, Si une a 2 ou plusieurs éléments, len() se comporte comme l'on pourrait s'attendre.
import numpy as np
a = np.array([2.3,3.6])
len () renvoie 2
Ma préoccupation ici est, si j'utilise une étrange exception de la manipulation, je ne peux pas faire la distinction entre un être vide et ayant la longueur = 1.
EDIT:
@noskio suggéré la mise a = np.array([2.3]). Le problème est, la genèse de l'une est par l'utilisation de numpy.genfromtxt. Le code ressemble à ceci:
import numpy as np
indata = np.genfromtxt(some_filename, names=True,dtype=None)
a = indata['one_col_headername']
En conséquence, si indata est une seule ligne dans le fichier, un est 0-d tableau.
source d'informationauteur mishaF
Vous devez vous connecter pour publier un commentaire.
Si vous avez besoin d'un one-liner (en supposant que la réponse que vous attendiez est 1):
Cette page explique pourquoi il a été décidé de mettre en œuvre 0-dimensions des tableaux dans numpy.
rendements
Vous pouvez faire la distinction entre un "vide", array (par exemple
np.array([])
) et un numpy scalaire (par exemplenp.array(2.3)
) en regardant la longueur de la forme.Il ressemble à la
size
propriété de ndarrays travaillera dans ce cas, si vous savez que le tableau est unidimensionnel. À mon avis,a.size
est beaucoup plus lisible quelen(np.atleast_1d(a))
. Toutefois, notez que lasize
propriété sera de retour le total nombre d'éléments dans le tableau si il a plus d'une dimension: