numpy基本函数

亡梦爱人 提交于 2019-12-27 04:33:36

新手第一次写博客外加刚开始学python,如果有不对的请多多指教
推荐使用工具,使用python的第三方软件
安装命令
pip install notebook
启动notebook 网页式命令工具
jupyter notebook
安装numpy第三方库
pip install numpy

numpy 数学计算的库 (科学计算库)

为什么要用numpy?
对于数据,我多用于列表来操作,我们要取里面的数据,每次都需要循环,非常的不方便;
numpy计算库解决多维列表的一些操作问题,有很多时候规避遍历问题;
备注:numpy所有数组操作基本上都不操作原数据

  1. numpy.array(列表) 相当于把列表转成numpy数组ndarray(多维数组)

  2. 显示ndarray数组的数据类型号:dtype

  3. 显示列表的最大维度:ndim

  4. 显示列表中数据的个数:size

  5. 显示列表的维度详细情况:shape(显示出来的结果表征是一个元组,元组的每一项分别表示每个维度的元素情况)

  6. 显示列表中元素每一项的字节大小:itemsize

  7. 产生numpy数组元素的方法:
    7.1 全为0的数组:numpy.zeros((5,)) 表示产生一维列表,列表里面有5个 0.
    7.2 全为1的数组:numpy.ones((5,)) 表示产生一维列表,列表里面有5个 1.
    7.3正方形的数组:numpy.eye(5,5) 对角为1,其余都为0,只对二维数组有效
    对角类型是float型
    7.4全是同一个值:numpy.full((2,3,4),10) 列表里面的值全是10
    full类型根据后面数据类型决定了整个数组的类型
    7.5产生随机的数组:numpy.empty((3,5))
    7.6对角线不为1的数组:numpy.diag([2,3,4,5,6,7])
    对角的类型是列表中数据的类型
    备注:产生的数据的数据类型,跟后面的值有关系

    7.7随机值
    numpy插件里面包含random,不需要再导入模块
    ​ 7.7.1 numpy.random.random((2,3)) 产生2维随机数数组,只有正数,没有负数,数值在0-1之间
    ​ 7.7.2 numpy.random.randn(4,5)正态分布(处理离散的点)
    ​ 7.7.3 numpy.random.randint(3,10,(2,3)(开始值,结束值,数组的维度情况值(tuple))
    7.8产生有序的序列
    ​ 7.8.1 产生几到几之间的有序的序列:arange(1,13,2) 取步长
    ​ 7.8.2 改变数组的维度:reshape(3,4) 对应里面的元素个数
    ​ 7.8.3 改变数组的维度:resize(3,4) 覆盖原来的数据

  8. 数据的类型转换:数组名.astype(‘int64’) 注意:把dtype类型变化以后要进行一定覆盖

  9. 数据引用
    9.1原始方法:下标 引用到具体的数据,几维就有几个下标
    省略一个下标,得出的结果就会降一维
    9.2切片方法:二个切片参数,用逗号隔开
    数组[几维用,隔开几维,:左边和右边的元素]

    9.3整数索引方法:arrp[[],[]]里面,分开两个维度,表示二维,逗号前后都[],[],[]里面表示的是元素的下标

    9.4布尔索引方法:(有效的数据过滤)
    ​ 单条件布尔:数组名字> or < 条件
    ​ 复合条件:&(与) or |(或)

  10. 数组的运算:
    对应位置的加减
    同时对这些数据进行共同的加减
    两个数组相加,相同的位数会相加
    +或者(numpy.add(1,2))
    -或者(numpy.subtract(1,2))
    *或者(numpy.multiply(1,2))
    /或者(numpy.divide(1,2))
    平方根numpy.sqrt(1) 开方
    数组名**方的次数 乘方
    numpy.sum() 求和
    numpy.mean() 求平均数 完成不了加权
    numpy.average() 求平均数 可以加权值平均

标准:broadcast广播机制:两个条件
(1)两个数组shape相同(2)某一项只有一个值
打印shape的值,对照shape的每一位,如果相等可以相加,其中一位为1也可以相加,其他都不行

11.维度的变换
transpose()数组作一个维度转换
思路:1.先把shape维度取出来,顺序是0,1,2
​ 2.再看转换后的shape顺序,确定不同的shape维度有多少元素
​ 3.对每个元素进行维度转换找规律
备注:利用引用元素的规则arr[维度0][维度1][维度2]

对应的变换规则,把每个元素的转换也对应作变换,确定transpose的位置
二维维度转换:行专列 列转行(矩阵的转置,可以使用arr.T)
用于两个维度之间交换:swapaxes(1,2)
三维维度变换:

arr1=numpy.arange(16).reshape(4,4)
#改成三维数组
arr1.resize(2,2,4)
'''原来维度
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],

       [[ 8,  9, 10, 11],
        [12, 13, 14, 15]]])
'''
arr1.transpose(1,0,2)
'''变换维度后
array([[[ 0,  1,  2,  3],
        [ 8,  9, 10, 11]],

       [[ 4,  5,  6,  7],
        [12, 13, 14, 15]]])
'''
transpose变换维度(2,2,4)
arr[0][0][0]=0	[0][0][0] 0 1 2 
arr[0][0][1]=1  1 0 210调换位置0 1 2
23以此类推
0 1 2 3对这个数来说,把维度10调换,一样,都是0
arr[0][1][0]=4 变换维度后  arr[1][0][0]=4
arr[0][1][1]=5 变换维度后  arr[1][0][1]=5

transpose变换维度
原来的维度(2,2,4) 
arr1.transpose(2,1,0)
变换后的维度(4,2,2)最外层4个元素,中间有2个元素,里面有2个元素
演示:
arr[0][0][0]=0
arr[0][0][1]=1 变换维度后 arr[1][0][0]=1
2,3以此类推
arr[0][1][0]=4 变换维度后 arr[0][1][0]=4
arr[0][1][1]=5 变换维度后 arr[1][1][0]=5
6,7以此类推
arr[1][0][0]=8 变换维度后 arr[0][0][1]=8
arr[1][0][1]=9 变换维度后 arr[1][0][1]=9
10,11以此类推

[[0,8],[4,12]],
[[1,9],[5,13]],
[[2,10],[6,14]],
[[3,11],[7,15]]
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!