学习Python数据分析随手笔记【三】numpy数组的函数ix_()

今天我去图书馆借了一本Python DataAnalysis的书

 

那今天来说一个关于numpy库的内容。

当然

课本给出的是著名的lena图片。不过在pycharm上运行的时候发现它报错了。随即就去查看了scipy的文件搜寻了半天。原来在新版本的scipy中已经将lena移除,不过再细心一看,就发现了一个ascent的文件。Show一哈子就发现了 lane已经被替换成了

这样的一个图片。

Emm好吧 就拿这个图片试试。

那就介绍一下这次的主要函数吧 ix_函数 这个函数可以为了获得多元组的结果而用来结合不同向量

那到底是什么样子的呢。

参照上面的代码如下:

import numpy as np
import matplotlib.pyplot as plt
import scipy.misc
floor = scipy.misc.ascent()
xmax = floor.shape[
0]
ymax = floor.shape[
1]
def indices(size):
    arr = np.arange(size)
    np.random.shuffle(arr)
#shuffle将序列随机排序
   
return arr
xin =
indices (xmax)
np.testing.assert_equal(
len(xin),xmax)
yin =
indices (ymax)
np.testing.assert_equal(
len(yin),ymax)
plt.imshow(floor[np.ix_(xin
,yin)])
plt.show()

运行结果如下:

balabalabala

就是这个类似马赛克东西。

其实这个图片就是由很多个数组规律的排序而成。

利用numpy.random的子程序包 shuffle()把数组的元素随机的索引号重新排列使得数组产生相应的变化。

然后用ix_()函数重新返回元组并且由imshow把他画出来

那这个ix_函数到底是个什么呢?

其实这个函数可以根据多个序列生成一个网格,他需要一个一维数组作为参数,并且返回一个numpy数组构成的元祖,至于为什么是numpy数组呢?因为他后面带着个一个大大的array!!!

至于过程啥样子呢?

打开ipython试试

In:ix_([0,1],[1,2])

Out: (array([[0],

       [1]]), array([[1, 2]]))

还有一个就是

np.testing.assert_equal(len(xin),xmax)
这是个什么东西?查了一下CSDN论坛发现涉及的太少了,去查numpy库的时候又因为繁多找的我头昏眼花,于是我决定直接看这个方法的源代码,尝试自己理解一下。然鹅。。。。。。

Raises an AssertionError if two objects are not equal.

Given two objects (scalars, lists, tuples, dictionaries or numpy arrays),
check that all elements of these objects are equal. An exception is raised
at the first conflicting values.

Parameters
----------
actual : array_like
    The object to check.
desired : array_like
    The expected object.
err_msg : str, optional
    The error message to be printed in case of failure.
verbose : bool, optional
    If True, the conflicting values are appended to the error message.

Raises
------
AssertionError
    If actual and desired are not equal.

Examples
--------
>>> np.testing.assert_equal([4,5], [4,6])
...
:
Items are not equal:
item=1
 ACTUAL: 5
 DESIRED: 6

它给了我这样的解释。。。好吧不用我自己理解了。显而易见,这是一个判断的内容。检查这个对象所有元素是否相等。画重点!!!

他还给了一个例子。Examples

   --------

   >>> np.testing.assert_equal([4,5], [4,6])

    ...

   :

    Itemsare not equal:

   item=1

    ACTUAL: 5

    DESIRED: 6

自己体会!

好了,现在时间20.37不看了。回宿舍打游戏去了。舍友等着我吃鸡呢!

你可能感兴趣的:(python数据分析)