布尔索索引的方法是明确选择我们想要的数组中的哪些项
>>> a = np.arange(12).reshape(3, 4)
>>> b = a > 4
>>> b # `b` is a boolean with `a`'s shape
array([[False, False, False, False],
[False, True, True, True],
[ True, True, True, True]])
>>> a[b] # 1d array with the selected elements
array([ 5, 6, 7, 8, 9, 10, 11])
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> def mandelbrot(h, w, maxit=20, r=2):
...
"""Returns an image of the Mandelbrot fractal of size (h,w)."""
...
x = np.linspace(-2.5, 1.5, 4*h+1)
...
y = np.linspace(-1.5, 1.5, 3*w+1)
...
A, B = np.meshgrid(x, y)
...
C = A + B*1j
...
z = np.zeros_like(C)
...
divtime = maxit + np.zeros(z.shape, dtype=int)
...
...
for i in range(maxit):
...
z = z**2 + C
...
diverge = abs(z) > r
...
div_now = diverge & (divtime == maxit)
...
divtime[div_now] = i
...
z[diverge] = r
...
...
return divtime
>>> plt.imshow(mandelbrot(400, 400))
# who is diverging now
# note when
# avoid diverging too mu