Numpy
    什么是Numpy:Numeric Python
        Numpy模块是Python的一种开源的数值计算扩展。
            1 一个强大的N维数组对象Array
            2 比较成熟的(广播)函数库
            3 用于整合(C/C++)和Fortran代码的工具包
            4 实用的线性代数、傅里叶变换和随机数生成函数
            5 numpy和稀疏矩阵运算包scipy配合使用更加强大
    
导入numpy库,并查看numpy版本

    注意:numpy模块不是python自带的,需要自己安装的。pip install numpy
 

    这是我要处理的图片 gtx.jpg
    必须要先安装这个模块 Pillow ,才能支持除png之外的格式的图片的读取。因为没有安装Pillow模块,会有如下报错:
ValueError: Only know how to handle extensions: ['png']; with Pillow installed matplotlib can handle
 
Pillow模块安装之后,就能正常读取图片内容了。
 

    读取的数组,元素值范围0-255。
 

看来gtx 是numpy.ndarray类型的,如果需要对图片进行操作,是需要对numpy.ndarray的属性和方法熟悉的。下一步学习numpy.ndarray的属性和方法。
 

 
再定义一个数组gtx2,是由gtx转换而来的,变成如下图所示的样子了。
 

 
一、创建ndarray
    1 使用np.array() 由python list创建
        ·numpy默认ndarray的所有元素类型是相同的
        ·如果传进来的列表中包含不同的类型,则统一为同一类型,优先级 str>float>int
 

 

 
 
    numpy的3个属性:
        1 shape 查看数组是几维的。

    317 表示数组的高,行数
    500 表示数组的宽,列数
    3 表示颜色
 
    任何一张二位的图片转化为3维数组,长宽最后一维表示颜色。
 

 
数组元素统一成同一种数据类型的元素
 

        n1.ndim    得到数组的维度数
 
        2 使用np的routines函数创建数组
            包含以下常见创建方法:
            1)np.ones(shape,dtype=None,order='C')   one表示创建的数组元素全是1
 

 
            2)np.zeros(shape,dtype=float,order='C')  zero表示创建的数组元素全是0

    
 
            3)np.full(shape,fill_value,dtype=None,order='C')  full表示可以自定义元素值fill_value
 
 

 
 
            4)np.eye(N,M=None,k=0,dtype=float)   对角线位置元素值为1,其他位置为0  满秩矩阵    N、M用来定义矩阵的高和宽的。
 

    这就是一个一元十次方程简化成这样,在线性代数中叫做满秩。
 
            5)np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)
 
 

            6)np.arange([start,]stop,[step,]dtype=None)    左闭右开区间
使用该方法创建ndarray时候,左闭右开。
 

            7)np.random.randint(low,high=None,size=None,dtype='l')
 

            8)np.random.randn(d0,d1...dn)    标准正态分布
 

            9)np.random.normal(loc=0.0,scale=1.0,size=None)
                    scale值越大其波动越厉害,scale=0.0 就没有波动了。
 

 
 
            10)np.random.random(size=None)   生成0到1的随机数,左闭右开
随机生成一张图片。png格式的像素值 0-1  jpg格式像素值0-255
 

=====================================
 
三、ndarray的基本操作
 
    1、索引
        一维与列表完全一致 多维时同理
 
 
    2、切片
        一维与列表完全一致,多维时同理
        比如一个3维数组, n1[0:2,1:3,-2:-1]   最终切到要的元素。
 
    3、变形  使用reshape函数,注意参数是一个tuple,如果参数是个负数,直接转换成一维数组ndarray,不论负数值是多少。比价省事的做法就是 -1。
 

 
 
    4、级联 (将两个数组拼接在一起)
        ·1 np.concatenate() 级联需要注意的点:
        ·2 级联的参数是列表:一定要加中括号或小括号
        ·3 维度必须相同
        ·4 形状相符
        ·5 【重点】级联的方向默认是shape这个tuple的第一个值所代表的维度方向
        ·6 可通过axis参数改变级来联的方向  
            axis = 0表示按行  
            axis = 1表示按列
 
            1. np.hstack 与 np.vstack
                水平级联与垂直级联,处理自己,进行维度的变更。
  

 
    5、切分
        与级联类似,三个函数完成切分工作:
            · np.split
            · np.vsplit   按行切
            · np.hsplit   按列切
 
 

 
        split默认情况下是对行进行切分
 
Signature: np.split(ary, indices_or_sections, axis=0)
            ary 是要切割数数据源
            axis = 0 是对行进行切割  axis= 1 是对列进行切分
 
 
    6、副本
        所有赋值运算不会为ndarray的任何元素创建副本,对赋值后的对象的操作也对原来的对象生效。可以使用copy()函数创建副本。
 
 
==============================
 
四:ndarray的聚合操作
    1、求和 np.sum
    2、最大最小值:np.max / np.min
 

 
 
 
    3、其他聚合操作
        np.sum
        np.prod
        np.mean    平均值  axis 的值是维度
        np.std        标准方程
        np.var
        np.min
        np.max
        np.argmin
        np.argmax
        np.median
        np.percentile
 
 
    操作文件:使用pandas打开文件president_heights.csv获取文件中的数据。
 

就把文件内容读取出来了。CSV格式比较经常遇到的,就是从Oracle数据库中导出的文件。
 

 
 
 
五、ndarray的矩阵操作
    
    1.基本矩阵操作
        
        1)算术运算符:
            ·加减乘除
 

 
 
 
        2)矩阵积 np.dot()
 

 
 
    2.广播机制
        【重要】ndarray广播机制的两条规则
            · 规则一:为缺失的维度补 1 (补一行或一列)
            · 规则二:假定缺失元素用已有值填充
 
 

 
 
 
 
    六、ndarray的排序,排序算法,面试经常问。

        
 
        1 快速排序
            np.sort()与ndarray.sort()都可以,但有区别:
                · np.sort()不改变输入
                · ndarray.sort()本地处理,不占用空间,但改变输入

 
 
 
 
        2 部分排序
            np.partition(a,k)
            有时我们不是对全部数据感兴趣,只对最小或最大的一部分感兴趣
                · 当k为正时,我们想要得到最小的k个数
                · 当k为负时,我们想要得到最大的k个数
 

            
 
只返回需要的这部分数,但这部分数是不会排序的。切片,排序即可。
 
 
 
 

3 numpy模块的更多相关文章

  1. Python:基本运算、基本函数(包括复数)、Math模块、NumPy模块

    基本运算 x**2 : x^2 若x是mat矩阵,那就表示x内每个元素求平方 inf:表示正无穷 逻辑运算符:and,or,not 字典的get方法 a.get(k,d) 1 1 get相当于一条if ...

  2. 【Python 数据分析】Numpy模块

    Numpy模块可以高效的处理数据,提供数组支持.很多模块都依赖他,比如:pandas.scipy.matplotlib 安装Numpy 首先到网站:https://www.lfd.uci.edu/~g ...

  3. python numpy模块

    目录 numpy模块 一维数组 二维数组(用的最多的) 获取多维数组的行和列 多维数组的索引 高级功能 多维数组的元素的替换 通过函数方法创建多维数组 矩阵的运算 点乘和转置(了解) 点乘必须 m*n ...

  4. Python及bs4、lxml、numpy模块包的安装

    http://blog.csdn.net/tiantiancsdn/article/details/51046490(转载) Python及bs4.lxml.numpy模块包的安装 Python 的安 ...

  5. numpy模块(对矩阵的处理,ndarray对象)

    6.12自我总结 一.numpy模块 import numpy as np约定俗称要把他变成np 1.模块官方文档地址 https://docs.scipy.org/doc/numpy/referen ...

  6. Python3:numpy模块中的argsort()函数

    Python3:numpy模块中的argsort()函数   argsort函数是Numpy模块中的函数: >>> import numpy >>> help(nu ...

  7. Day 19 numpy 模块

    numpy 模块(多维数组) import numpy as np arr=np.array([1,2,3,4],[5,6,7,8]) print(arr) #[[1 2 3 4] #[5 6 7 8 ...

  8. Pathon中numpy模块

    目录 numpy模块 切割矩阵 矩阵元素替换 矩阵的合并 通过函数创建矩阵 fromstring/fromfunctions 矩阵的运算 常用矩阵运函数 矩阵的点乘 矩阵的逆 矩阵的其他操作 nump ...

  9. 开发技术--Numpy模块

    开发|Numpy模块 Numpy模块是数据分析基础包,所以还是很重要的,耐心去体会Numpy这个工具可以做什么,我将从源码与 地产呢个实现方式说起,祝大家阅读愉快! Numpy模块提供了两个重要对象: ...

随机推荐

  1. 【C++程序不输出】到底是什么造成了程序不输出

    (ubuntu 16.04) 最近做题的时候,经常莫名其妙地,程序写的明明没毛病但是就是输出不了,气得我呀 然后某一次突然发现了原因,竟然是输出之后没有加endl或者空格! 例如: cout<& ...

  2. Android 布局属性大全

    常用属性汇总: android:hint          设置EditText为空时输入的提示信息 android:gravity        对该view内容的限定:靠上 下 左 右 andro ...

  3. padding valid same区别——就是是否补齐0的问题

    参考:https://stackoverflow.com/questions/37674306/what-is-the-difference-between-same-and-valid-paddin ...

  4. POJ 3268 最短路应用

    POJ3268 题意很简单 正向图跑一遍SPFA 反向图再跑一边SPFA 找最大值即可. #include<iostream> #include<cstdio> #includ ...

  5. bzoj4082

    贪心+倍增 首先如果这个问题在序列上,好像可以按右端点排序,然后从起点开始向能到的最远的地方走. 但是环上不可以,因为随即一个起点可能不是最小的. 然后神思路来了:我们先将环展开倍增,再将区间按右端点 ...

  6. 开启和安装Kubernetes 基于Docker For Windows

    0.最近发现,Docker For Windows Stable在Enable Kubernetes这个问题上是有Bug的,建议切换到Edge版本,并且采用下文AliyunContainerServi ...

  7. SpringBoot2.0整合Redission

    Redisson是redis一个很强大的客户端,有兴趣的同学可以看我的下一篇文章,这篇主要讲如何整合,费话不多说,直接上干货(大牛请绕道) 首先创建RedissionConfig文件 import o ...

  8. SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(4)DATA步循环与控制.常用全程语句.输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和E ...

  9. VC socket api使用引入

    1.在创建项目时勾上windows socket api的使用 2.头文件 #pragma  comment(lib,"WS2_32.lib") 3.初始化 WSADATA dat ...

  10. 【PL/SQL】用星号拼出金字塔

    代码中首先声明了几个变量,然后使用嵌套循环去输出空格和星号,其中: 每层空格数=总层数-该层层数 每层星号数=当前层数*2-1 代码如下: declare v_number1 ); --外层循环控制金 ...