Numpy 位置列表型索引

让我们使用ix_函数,把图像Lena搅乱。ix_函数能利用多个序列生成一个网状结构。

具体步骤

首先把数组的索引随机重排,步骤如下。

  1. 把数组的索引随机重排。

    利用numpy.random模块中的shuffle函数,生成一个随机排列的索引值数组:

def shuffle_indices(size):
    arr = numpy.arange(size)
        numpy.random.shuffle(arr)

    return arr   
  1. 用随机重排后的索引画出数组。
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()

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程