Я пытаюсь вычислить значения двух переменных в одном методе и затем вернуть их. Затем используйте возвращенные значения в качестве входных данных для другого метода, который графически отображает их - переменные содержат списки. Я не мог найти какую-либо соответствующую информацию для решения этой проблемы. Дальнейшая разработка приведена ниже, фрагмент кода.
Вот соответствующий код:
import numpy as np #importing numpy for optimised arrays
import matplotlib.pyplot as plt # importing module to graphically display arrays
class Mandelbrot(object): #creating class to generate a mandelbrot set
def __init__(self,x1,x2,y1,y2,iterations,axis_points): #initialising the relevant parameters
self.iterations = iterations
self.axis_points = axis_points
self.x1 = x1
self.x2 = x2
self.y1 = y1
self.y2 = y2
def parameters(self): #creating method to generate a list of evenly spaced numbers to create a 2D grid,
xrange = np.linspace(self.x1,self.x2,self.axis_points) #then only storing numbers which are part of the mandelbrot set
yrange = np.linspace(self.y1,self.y2,self.axis_points)
count = 0
counts = []
full_grid = []
for i in xrange: #looping over every coordinate in the created grid to test if it is in the mandelbrot set
for j in yrange:
count = 0
z = complex(0.0,0.0) #initialising complex number to hold the iterations inside the while loop
z_mag = 0
full_grid.append((complex(i,j)))
while z_mag <= 2: #iterating until "point-of-no-return" thershold
z_mag = np.linalg.norm(z) #optimised function to return the magnitude of the complex number
z =z**2 + complex(i,j) #updating values of complex number
count+=1
if z_mag > 2:
counts.append(count)
elif count > 255: #only adding to mandelbrot set if the number can pass a set number of iterations
counts.append(256)
break #ending while loop to go to new coordinate on grid
np_full_grid = np.array(full_grid)
return np_full_grid,counts
def display(self): #creating method to graphically display mandelbrot set
f, ax = plt.subplots()
points = ax.scatter(self.real, self.imag, c=counts, s=1, cmap="prism") #displaying filtered grid
f.colorbar(points) #generating colour bar from
Вот мой тестовый код:
def main():
M = Mandelbrot(-2.025,0.6,-1.125,1.125,255,200) #setting parameters for the iteration
generated_set = Mandelbrot.parameters(M) #storing the list of mandelbrot set coordinates in complex plane
Mandelbrot.display(generated_set) #graphically displaying the generated mandelbrot set
main()
При возврате только np_full_grid и использовании его для метода отображения все работает , но мне также нужен доступ к списку счетов, чтобы правильно построить. Но когда я возвращаю np_full_grid и считает, он становится кортежем и личностью. больше не работает, как я могу получить доступ к обоим возвращенным значениям, которые будут использоваться в методе отображения? спасибо