-1
votes

Compter le nombre de fois qu'une variable a changé de valeurs

Supposons que je génère une liste de manière aléatoire. xxx pré>

maintenant pour x dans la plage (0.100) code>. Je modifie les éléments en fonction des règles, puis comptez le nombre d'éléments de chaque type, à l'aide de compte = compteur (myList) code> p> xxx pre>

in Le début La liste peut être dans un état lorsque le nombre de -1 est supérieur au nombre de + 1, puis transition de l'état où le nombre de + 1 est supérieur au nombre de -1. p>

est-il moyen de compter le nombre de fois qu'une telle transition est faite? En plus de cela, serait-il possible d'enregistrer les valeurs de x lorsqu'une telle transition est effectuée dans une liste. P>

Jusqu'à présent, j'ai essayé de tracer ces données par rapport à p>

p = counts[1]
m = counts[-1]  
plt.plot(x, p,m)
plt.show()


0 commentaires

3 Réponses :


0
votes
import random

mylist = []
new_list = list(mylist)
transitions = []

for x in range(0,100): 
    mylist.append(random.choice([1, 0, -1])) # some rules, which change mylist
    is_trans1 = new_list.count(1) > new_list.count(-1) and mylist.count(1) < mylist.count(-1)
    is_trans2 = new_list.count(1) < new_list.count(-1) and mylist.count(1) > mylist.count(-1)
    if is_trans1 or is_trans2:
        transitions.append(x)       
    new_list = list(mylist) # save mylist for the next iteration

0 commentaires

0
votes

Si vous êtes uniquement intéressé par quel élément est le plus courant dans votre liste, alors compteur a une fonction intégrée la fonction la fonction que vous pouvez interroger: < Pré> xxx

Il favorise automatiquement l'élément le plus courant (ainsi que son compte) pour être le premier élément de la liste retournée. Voici quelques retours voisins autour d'un point de transition: xxx


0 commentaires

0
votes

Cette réponse suppose que vous essayez de compter uniquement une transition et n'essayez pas de tracer des valeurs (dernier paragraphe de la question).

Si vous traitez uniquement d'un {- 1, 0, 1} code> définit, vous pouvez peut-être résumer une valeur d'une liste. C'est un peu plus rapide que les ajoutez-les à compter et vous donne une information de transition. P>

Et bien sûr, il est plus facile de ne pas résumer la liste complète à chaque fois, mais juste incrémenter / décrémenter un compteur dans votre bloc logique lorsque des modifications se produisent. P>

transitions_history
Out:
    [(1, 'neg_to_pos', [0, 1]),
     (9, 'pos_to_neg', [0, 1, 1, 1, -1, -1, -1, -1, -1]),
     (14, 'neg_to_pos', [0, 1, 1, 1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1])]
transition_counter
Out:
3


0 commentaires