Lorsque j'imprime un tableau numpy, j'obtiens une représentation tronquée, mais je veux le tableau complet.
Y a-t-il un moyen de faire ça?
Exemples:
>>> numpy.arange(10000)
array([ 0, 1, 2, ..., 9997, 9998, 9999])
>>> numpy.arange(10000).reshape(250,40)
array([[ 0, 1, 2, ..., 37, 38, 39],
[ 40, 41, 42, ..., 77, 78, 79],
[ 80, 81, 82, ..., 117, 118, 119],
...,
[9880, 9881, 9882, ..., 9917, 9918, 9919],
[9920, 9921, 9922, ..., 9957, 9958, 9959],
[9960, 9961, 9962, ..., 9997, 9998, 9999]])
np.inf
?np.nan
et'nan'
ne fonctionne que par total fluke, et'nan'
ne fonctionne même pas en Python 3 car ils ont changé l'implémentation de comparaison de type mixte qui enthreshold='nan'
dépendait.threshold=np.nan
plutôt que'nan'
dépend d'un autre hasard, c'est que la logique d'impression de la matrice compare la taille de la matrice au seuil aveca.size > _summaryThreshold
. Cela revient toujoursFalse
pour_summaryThreshold=np.nan
. Si la comparaison a étéa.size <= _summaryThreshold
, tester si la matrice doit être entièrement imprimée au lieu de tester être résumé, ce seuil déclencherait la récapitulation pour toutes les baies.)tmp
juste un numpy.arraylist(tmp)
. D'autres options avec un formatage différent sonttmp.tolist()
ou pour plus de contrôleprint("\n".join(str(x) for x in tmp))
.Réponses:
Utilisation
numpy.set_printoptions
:la source
numpy
tableau qu'une seule fois, cette solution a malheureusement l'inconvénient de vous obliger à réinitialiser ce changement de configuration après avoir effectué l'impression.Je suggère d'utiliser
np.inf
au lieu denp.nan
ce qui est suggéré par d'autres. Ils fonctionnent tous les deux pour votre objectif, mais en définissant le seuil sur "infini", il est évident pour tout le monde qui lit votre code ce que vous voulez dire. Avoir un seuil de "pas un nombre" me semble un peu vague.la source
np.set_printoptions(threshold=1000)
il reviendra au comportement par défaut. Mais vous pouvez définir ce seuil aussi bas ou haut que vous le souhaitez.np.set_printoptions(threshold=np.inf)
modifie simplement la taille maximale qu'un tableau imprimé peut être avant d'être tronqué à l'infini, de sorte qu'il ne soit jamais tronqué, quelle que soit sa taille. Si vous définissez le seuil sur un nombre réel, ce sera la taille maximale.np.inf
,np.nan
ou'nan'
. Quoi que vous y mettiez, NumPy utilisera toujours un simple>
pour comparer la taille du tableau à votre seuil.np.nan
ne fonctionne que parce que c'est aua.size > _summaryThreshold
lieu dea.size <= _summaryThreshold
, etnp.nan
retourneFalse
pour toutes les comparaisons>
/<
/>=
/<=
.'nan'
ne fonctionne que du fait des détails d'implémentation fragiles de la logique de comparaison de type mixte de Python 2; il casse complètement sur Python 3.np.get_printoptions()['threshold']
. Vous pouvez stocker cette valeur avant de définir le seuil, puis la restaurer ensuite (ou utiliser unwith
bloc comme suggéré dans d'autres réponses).Les réponses précédentes sont les bonnes, mais comme alternative plus faible, vous pouvez vous transformer en liste:
la source
NumPy 1.15 ou plus récent
Si vous utilisez NumPy 1.15 (publié le 2018-07-23) ou une version plus récente, vous pouvez utiliser le
printoptions
gestionnaire de contexte:(bien sûr, remplacez
numpy
parnp
si c'est comme ça que vous avez importénumpy
)L'utilisation d'un gestionnaire de contexte (le
with
-bloc) garantit qu'après la fin du gestionnaire de contexte, les options d'impression reviendront à ce qu'elles étaient avant le démarrage du bloc. Il garantit que le paramètre est temporaire et appliqué uniquement au code dans le bloc.Consultez la
numpy.printoptions
documentation pour plus de détails sur le gestionnaire de contexte et les autres arguments qu'il prend en charge.la source
On dirait que vous utilisez numpy.
Si tel est le cas, vous pouvez ajouter:
Cela désactivera l'impression des coins. Pour plus d'informations, consultez ce didacticiel NumPy .
la source
ValueError: threshold must be numeric and non-NAN, try sys.maxsize for untruncated representation
Voici une façon unique de le faire, ce qui est utile si vous ne souhaitez pas modifier vos paramètres par défaut:
la source
'nan'
,np.nan
ou tout de ce qui précède. Ce n'est pas pris en charge, et ce mauvais conseil cause de la douleur aux personnes qui passent à python 3numpy.set_printoptions(threshold=numpy.inf)
Utiliser un gestionnaire de contexte comme l'a suggéré Paul Price
la source
np.printoptions
numpy.savetxt
ou si vous avez besoin d'une chaîne:
Le format de sortie par défaut est:
et il peut être configuré avec d'autres arguments.
Notez en particulier comment cela ne montre pas non plus les crochets et permet beaucoup de personnalisation, comme mentionné à: Comment imprimer un tableau Numpy sans crochets?
Testé sur Python 2.7.12, numpy 1.11.1.
la source
Il s'agit d'une légère modification (suppression de l'option permettant de passer des arguments supplémentaires à la réponse
set_printoptions)
de neok .Il montre comment vous pouvez utiliser
contextlib.contextmanager
pour créer facilement un tel gestionnaire de contexte avec moins de lignes de code:Dans votre code, il peut être utilisé comme ceci:
la source
try
/finally
autour deyield
dans un gestionnaire de contexte, afin que le nettoyage se fasse quoi qu'il arrive.with np.printoptions(threshold=np.inf):
En complément de cette réponse du nombre maximum de colonnes (fixé avec
numpy.set_printoptions(threshold=numpy.nan)
), il y a aussi une limite de caractères à afficher. Dans certains environnements, comme lors de l'appel de python à partir de bash (plutôt que dans la session interactive), cela peut être corrigé en définissant le paramètrelinewidth
comme suit.Dans ce cas, votre fenêtre doit limiter le nombre de caractères pour boucler la ligne.
Pour ceux qui utilisent du texte sublime et souhaitent voir les résultats dans la fenêtre de sortie, vous devez ajouter l'option
"word_wrap": false
de génération au fichier de construction sublime [ source ].la source
Depuis la version 1.16 de NumPy, pour plus de détails, voir le ticket GitHub 12251 .
la source
Pour l'éteindre et revenir au mode normal
la source
threshold=0
, ce qui signifie "tronquer dès que possible" - pas ce que vous voulez du tout.Supposons que vous ayez un tableau numpy
Si vous souhaitez imprimer le tableau complet de manière unique (sans basculer np.set_printoptions), mais que vous voulez quelque chose de plus simple (moins de code) que le gestionnaire de contexte, faites simplement
la source
Une légère modification: (puisque vous allez imprimer une énorme liste)
Cela augmentera le nombre de caractères par ligne (largeur de ligne par défaut de 75). Utilisez n'importe quelle valeur que vous aimez pour la largeur de ligne qui convient à votre environnement de codage. Cela vous évitera d'avoir à parcourir un grand nombre de lignes de sortie en ajoutant plus de caractères par ligne.
la source
Vous pouvez utiliser la
array2string
fonction - docs .la source
ValueError: threshold must be numeric and non-NAN, try sys.maxsize for untruncated representation
Vous ne voudrez pas toujours que tous les éléments soient imprimés, en particulier pour les grands tableaux.
Un moyen simple de montrer plus d'articles:
Il fonctionne très bien lorsque la tranche est <1000 par défaut.
la source
Si vous avez des pandas disponibles,
évite l'effet secondaire d'exiger une réinitialisation de
numpy.set_printoptions(threshold=sys.maxsize)
et vous n'obtenez pas le numpy.array et les crochets. Je trouve cela pratique pour vider un large éventail dans un fichier journalla source
Si une matrice est trop grande pour être imprimée, NumPy ignore automatiquement la partie centrale de la matrice et imprime uniquement les coins: pour désactiver ce comportement et forcer NumPy à imprimer la totalité de la matrice, vous pouvez modifier les options d'impression à l'aide de
set_printoptions
.ou
Vous pouvez également vous référer à la documentation numpy pour "ou une partie" pour plus d'aide.
la source
'nan'
,np.nan
ou tout de ce qui précède. Ce n'est pas pris en charge, et ce mauvais conseil cause de la douleur aux personnes qui passent à python 3ValueError: threshold must be numeric and non-NAN, try sys.maxsize for untruncated representation