zoukankan      html  css  js  c++  java
  • python--numpy模块、spicy模块、 matplotlib模块

    一:numpy模块

    ndarray:存储单一数据类型的多维数组

    ufunc:能够对数组进行处理的函数(universal function object)

    #numpy 中arange用法,指定开始值/终止值/步长来创建一维数组数组,但是数组不包括终值。
     arange_array=np.arange(1,2,0.1)
     re_arange_array=arange_array.reshape(2,5)#使用reshape重新定义数组的维度或者数组的大小
     print "arange_array is array,it's %s " % arange_array
     print "re_arange_array is:%s" % re_arange_array
    #linspace函数通过指定开始值、终值和元素个数来创建一维数组,可以通过endpoint关键字指定
     #是否包括终值,缺省设置是包括终值:
     linspace_array=np.linspace(0, 1, 12)#创建的是等差数列!
     print "linspace_array is: %s" % linspace_array
    
    #logspace创建等比数列,产生起始值10^起始值,到10^终止值,n个值的一维数组
     logspace_array=np.logspace(0,2,30)
     print "logspace array is: %s" % logspace_array
    def fun2(i,j):
     return (i+1)*(j+1)
     b=np.fromfunction(fun2,(9,9))
     #fromfunction从函数创建数组,自定义函数,从函数中创建数组;
     #frompyfunc的调用格式为frompyfunc(func, nin, nout),nin是此函数的输入参数的个数,nout是此函数的返回值的个数。
     print 'b is:%s' %b

    Data type objects (dtype) and 结构数组

    数据类型(data type object, ie. numpy.dtype的实例)描述的是array对象怎样解析内存中的固定大小的内存段。它描素了数据的一下几个方面:

    1. 数据的类型(integer, float, Python object, etc.)
    2. 数据的大小(how many bytes is in e.g. the integer)
    3. 二进制位的存储顺序(little-endian or big-endian)
    4. 如果数据类型(data type)是一条记录,即其他数据类型的组合(e.g., describing an array item consisting of an integer and a float),这和C语言里面的struct类似。
    1. 记录的各个数据的名称是什么,怎么获取这个子数据。
    2. 每个子数据的的类型是什么。
    3. 每个子数据都使用哪一部分内存。
    1. 如果数据是一个子数组,它的形状是什么。

      ndrray_数据结构

     import numpy as np;
    
    persontype=np.dtype({ 'names':['name','age','weight'], 'formats':['S32','i','f']})
    a = np.array([("zhuang",32,75.5),("wang",24,65.2)],dtype=persontype) 
    print a[1]['name']
    print a.strides

     扩展:常用tile函数和repeat函数扩展numpy模块

    1:numpy.tile(A,B)函数:重复A,B次,这里的B可以时int类型也可以是元组类型

    >>> import numpy
    >>> numpy.tile([0,0],5)#在列方向上重复[0,0]5次,默认行1次
    array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
    >>> numpy.tile([0,0],(1,1))#在列方向上重复[0,0]1次,行1次
    array([[0, 0]])
    >>> numpy.tile([0,0],(2,1))#在列方向上重复[0,0]1次,行2次
    array([[0, 0],
           [0, 0]])
    >>> numpy.tile([0,0],(3,1))
    array([[0, 0],
           [0, 0],
           [0, 0]])
    >>> numpy.tile([0,0],(1,3))#在列方向上重复[0,0]3次,行1次
    array([[0, 0, 0, 0, 0, 0]])
    >>> numpy.tile([0,0],(2,3))<span style="font-family: Arial, Helvetica, sans-serif;">#在列方向上重复[0,0]3次,行2次</span>
    array([[0, 0, 0, 0, 0, 0],
           [0, 0, 0, 0, 0, 0]])

    2:repeat(A):重复A次  repeat([A,B]):对应重复A次,B次

    >>> from numpy import *
    >>> repeat(7.,4)
    array([ 7.,  7.,  7.,  7.])
    >>> a=array([10,20])
    >>> a.repeat([3,2])
    array([10, 10, 10, 20, 20])
    >>> repeat(a,[3,2])
    array([10, 10, 10, 20, 20])
    >>> a=array([[10,20],[30,40]])
    >>> a.repeat([3,2],axis=0)
    array([[10, 20],
           [10, 20],
           [10, 20],
           [30, 40],
           [30, 40]])
    >>> a.repeat([3,2],axis=1)
    array([[10, 10, 10, 20, 20],
           [30, 30, 30, 40, 40]])
    >>> 

    3:sum函数:

    sum(a,axis=0):普通的相加

    sum(axis=1) :将一个矩阵的每一行向量相加

    4:argsort函数:返回排序后元素在原对象中的下标,属于numpy中的函数

    区别于sort函数和sorted函数

    1)、sort 只是list类型的内建函数,对其他非列表型序列不适用。

    (2)、sorted是所有类型的内建函数 ,返回排序后的对象,原对象不改变。进阶:sorted(a,key=...,reversed=True)

    a=array([(5,4,3,2,6),(7,8,0,1,9)])
    >>> a
    array([[5, 4, 3, 2, 6],
           [7, 8, 0, 1, 9]])
    >>> a.argsort()
    array([[3, 2, 1, 0, 4],
           [2, 3, 0, 1, 4]], dtype=int64)

    5:zeros:创建0矩阵

    二:spicy模块

  • 相关阅读:
    LeetCode 67 Add Binary(二进制相加)(*)
    从头认识Spring-3.1 简单的AOP日志实现-某方法之前的前后记录日志
    Registration system
    BZOJ 1055 HAOI2008 玩具取名 动态规划
    9.Laravel5学习笔记:在laravel中注冊自己的服务到容器中
    B-Tree 索引和 Hash 索引的对照
    负载均衡之基于DNS负载
    Eclipse中git插件导入远程库和上传项目源代码到远程库
    Android开发艺术-第二章 IPC 机制
    一天教你入门struts2
  • 原文地址:https://www.cnblogs.com/graceting/p/4156360.html
Copyright © 2011-2022 走看看