Le moyen le plus rapide pour analyser les chaînes JSON dans les tableaux numpy
J'ai d'énormes objets json contenant 2D listes de coordonnées que j'ai besoin de transformer en tableaux numpy pour le traitement.
Cependant, l'utilisation de json.loads
suivi avec np.array()
est trop lent.
Est-il un moyen d'augmenter la vitesse de création de tableaux numpy de json?
import json
import numpy as np
json_input = '{"rings" : [[[-8081441.0, 5685214.0], [-8081446.0, 5685216.0], [-8081442.0, 5685219.0], [-8081440.0, 5685211.0], [-8081441.0, 5685214.0]]]}'
dict = json.loads(json_input)
numpy_2d_arrays = [np.array(ring) for ring in dict["rings"]]
Je prendrais quelque solution que ce soit!
- Je suis un
json
décodeur d'erreur: "Fichier "/usr/lib/python3.5,... json.décodeur.JSONDecodeError: Attend valeur: ligne 1, colonne 14 (char 13)` - vous avez raison, c'est corrigé
- C'était la
()
qui étaient non-standard JSON. - D'autres analyseurs sont
eval
etast.literal_eval
(safer). Sur ce petit échantillonjson.loads
est sensiblement plus rapide. Lenp.array
partie prend encore moins de temps.
Vous devez vous connecter pour publier un commentaire.
La réponse la plus simple serait tout simplement:
Car cela évite explicitement en boucle au-dessus de votre tableau en python vous seriez probablement voir une légère accélération. Si vous avez le contrôle sur la création de
json_input
il serait mieux d'écrire comme une série de tableau. Une version est ici.Depuis syntaxe JSON est vraiment près de la syntaxe de Python, je vous suggère d'utiliser
ast.literal_eval
. Il peut être plus rapide...Lui donner un essai. Et de nous dire.
Pour cela, des données spécifiques, vous pouvez essayer ce