Je veux lire une image en niveaux de gris, dire quelque chose avec (248, 480, 3) forme, puis utiliser chaque élément comme valeur de lam pour faire une valeur aléatoire de Poisson et faire ceci pour chaque élément et créer un nouvel ensemble de données avec la même forme. Je veux le faire autant que nscan
, puis je veux les ajouter tous ensemble et les mettre dans un nouvel ensemble de données et le tracer à nouveau pour obtenir quelque chose qui est similaire à la première image que j'ai mis au début. Ce code fonctionne mais il est extrêmement lent, je me demandais s'il y avait moyen de le rendre plus rapide?Comment optimiser les boucles pour générer un nouveau tableau de Poisson aléatoire en python?
import numpy as np
import matplotlib.pyplot as plt
my_image = plt.imread('myimage.png')
def genP(data):
new_data = np.zeros(data.shape)
for i in range(data.shape[0]):
for j in range(data.shape[1]):
for k in range(data.shape[2]):
new_data[i, j, k] = np.random.poisson(lam = data[i, j, k])
return new_data
def get_total(data, nscan = 1):
total = genP(data)
for i in range(nscan):
total += genP(data)
total = total/nscan
plt.imshow(total)
plt.show()
get_total(my_image, 100)