J'essaie d'obtenir une taille de matrice, (lat, lon), avec la valeur du coefficient de Pearson pour chaque point de grille, pour
x: un dataarray 3D (heure, lon) (taille de temps est 30 ) p>
Y: un vecteur de colonne de dataudray avec une série de valeurs de 30 valeurs à l'intérieur P>
Je tiens donc à calculer le coefficient Pearson pour chaque (lat, lon) pour un vecteur de colonne de 30 éléments pour x. p>
J'ai essayé: p> mais je reçois cette erreur: p> ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
3 Réponses :
En supposant que vous utilisez scipeds.pearsr . Les arguments à Pearsonr doivent être des matrices d'un dimensionnement em>. Donnez-vous à: P> corrmap[i, j], p_value = pearsonr(x[:, i, j].ravel(), y)
Merci beaucoup pour votre réponse. Oui, j'ai correctement importé Pearsonr de Scipy.Stats. Quoi qu'il en soit, faire la correction que vous suggérez (que je comprends et approuvez), je reçois un attributError, en raison du fait que "" dataarray objet "n'a pas d'attribut" Ravel ". Est-ce une erreur d'inizialiser Cormap au début en tant que XR. Dataarray avec une forme (lat, lon)?
Le problème est que vous utilisez y code> et il a deux dimensions, PearsonR ne peut pas gérer cela. Spécifier
Y [:, 0] code> et fonctionne. C'est-à-dire:
corrmap = np.zeros(((len(corrmap['lat']), len(corrmap['lon'])))
for i in range(len(corrmap['lat'])):
for j in range(len(corrmap['lon'])):
corrmap[i, j], p_value = pearsonr(x[:, i, j], y[:,0])
Vous pouvez calculer la import numpy
numpy.corrcoef(list1, list2)[0, 1]
Qu'est-ce que
Y.Shape code>? (Je suppose qu'un objet
dataarray code> a une image code> attribut code>.)
Est
Pearsonr code> importé de
sciped.stats code>? Sinon, où est-il défini?
Désolé j'ai oublié de dire que Y.Shape est (30, 1), donc un vecteur de colonne. Et oui je l'ai fait, j'ai correctement importé Pearsonr de Scipy.Stats
"... Y.Shape est (30, 1), donc un vecteur de colonne." I> C'est le problème. Voir la réponse @juliangiles.