让我们使用ix_
函数,把图像Lena搅乱。ix_
函数能利用多个序列生成一个网状结构。
具体步骤
首先把数组的索引随机重排,步骤如下。
- 把数组的索引随机重排。
利用numpy.random模块中的
shuffle
函数,生成一个随机排列的索引值数组:
def shuffle_indices(size):
arr = numpy.arange(size)
numpy.random.shuffle(arr)
return arr
- 用随机重排后的索引画出数组。
matplotlib.pyplot.imshow(lena[numpy.ix_(xindices, yindices)])
最终得到的是一幅被完全弄乱的Lena肖像,如下图所示。
本攻略的完整代码如下:
import scipy.misc
import matplotlib.pyplot
import numpy.random
import numpy.testing
# 加载数组Lena
lena = scipy.misc.lena()
xmax = lena.shape[0]
ymax = lena.shape[1]
def shuffle_indices(size):
arr = numpy.arange(size)
numpy.random.shuffle(arr)
return arr
xindices = shuffle_indices(xmax)
numpy.testing.assert_equal(len(xindices), xmax)
yindices = shuffle_indices(ymax)
numpy.testing.assert_equal(len(yindices), ymax)
# 绘制数组Lena
matplotlib.pyplot.imshow(lena[numpy.ix_(xindices, yindices)])
matplotlib.pyplot.show()