zoukankan      html  css  js  c++  java
  • Numpy

    苦numpy久矣!

    Numpy 教程

    import numpy as np
    

    The Basics

    属性 解释
    ndarray.ndim 返回ndarray的轴数,向量轴为1,矩阵是2,以此类推
    ndarray.shape 返回ndarray的形状(n,m)
    ndarray.size 返回ndarray的大小,即元素的个数
    ndarray.dtype 返回ndarray的数据类型
    ndarray.itemsize 返回数据类型所占位数?
    ndarray.data
    a = np.arange(15).reshape(3, 5)
    a
    a.shape
    a.ndim
    a.dtype.name
    a.itemsize
    a.size
    type(a)
    b = np.array([6, 7, 8])
    b
    type(b)
    

    在这里插入图片描述

    Array Creation

    a = np.array(1,2,3,4)    # WRONG
    a = np.array([1,2,3,4])  # RIGHT
    

    dtype=complex

    c = np.array([[1, 2], [3, 4]], dtype = complex)
    

    np.ones(), np.zeros(), np.empty()

    默认dtype=float.64

    np.zeros((3,4))  
    np.ones((2,3,4), dtype = np.int16)
    np.empty((2,3)) #这玩意儿输出的情况视内存而定,我输出的和上面的一样了。
    

    np.zeros_like() np.ones_like() np.empty_like()
    注意:连数据类型一并复制的
    在这里插入图片描述

    np.arange(), np.linspace()

    np.arange(10, 30, 5) #array([10, 15, 20, 25])  没有30, 跟range一样
    

    np.arange() 的步长还可以为浮点数,这是range()所不具备的,不过教程并不推荐这种做法(似乎是因为不稳定)。

    np.arange(0, 2, 0.3)
    
    np.linspace(0, 2, 9) #array([0.  , 0.25, 0.5 , 0.75, 1.  , 1.25, 1.5 , 1.75, 2.  ])
    

    9即个数

    np.random.rand()|np.random.randn()

    *.rand() [0,1]的均匀分布

    np.random.rand(3, 2, 2)
    

    在这里插入图片描述

    *.randn() 标准正态分布
    *.randn() * (sigma) + (mu) 服从 (mathcal{N}(mu,sigma^2))

    np.fromfunction()

    在这里插入图片描述

    Printing Arrays

    np.set_printoptions(threshold=np.nan)

    在这里插入图片描述

    在这里插入图片描述

    Basic Operations

    ndarray里面的 + - * / **都是元素对元素的。
    在这里插入图片描述

    矩阵乘法 dot() @

    a1 = np.arange(8)
    b1 = np.arange(8)
    a2 = a1.reshape(2, 4)
    b2 = b1.reshape(4, 2)
    c1 = np.arange(2)
    a1 @ b1 #140
    a1.dot(b1) # 140
    #a2 @ a2 | a2.dot(a2)  Error
    a2 @ b2 #array([[28, 34], [76, 98]])
    a2.dot(b2) #array([[28, 34], [76, 98]])
    #a2 @ c1 | a2.dot(c1) Error
    b2 @ c1 #array([1, 3, 5, 7])
    b2.dot(c1) #array([1, 3, 5, 7])
    

    1.出现最后3个的原因:c1.shape: (2, )
    2. 看来@ 和 dot() 并无不同 我以为在向量的时候不一样

    +=, *= 俩边数据类型不一致的时候有风险

    在这里插入图片描述

    在这里插入图片描述

    注意:俩个ndarray 做运算,“粗糙”的服从更加精准的。

    ndarray.sum()| min() | max() | cumsum()

    都有个共同的关键字: axis
    axis = 0 作用于列
    axis = 1 作用于行

    ndarray.cumsum() 累加和
    在这里插入图片描述

    Indexing, Slicing, and Iterating

    向量

    a = np.arange(10) ** 3 #array([  0,   1,   8,  27,  64, 125, 216, 343, 512, 729], dtype=int32)
    a[2]
    a[2:5]
    a[:6:2]
    a[: :-1]
    for i in a:
    	print(i)
    

    与list一样(没看出啥差别)

    多轴(多维)

    在这里插入图片描述

    在这里插入图片描述

    注意:多维的时候,c[1],就当成list来理解。

    多维情况下的迭代,也可以用list来理解,就是一层层(一个轴一个轴)地往下走。

    d[1,...] d[..., 1] d[1,...,1]

    在这里插入图片描述

    Shape Manipulation (操作shape属性)

    ndarray.ravel() | .reshape() | .T

    注意:上面的方法不改变数组本身 也可以np.*()
    .ravel() #按行排列,返回一维数组 (C-style 啥意思不明白)
    .T 转置
    在这里插入图片描述

    np.resize() | ndarray.resize()

    和reshape()不同,用来改变对象本身

    在这里插入图片描述

    Stacking together different arrays

    np.vstack((a,b)) | np.hstack((a, b))

    在这里插入图片描述

    np.column_stack((a, b)) | np.row_stack((a, b))

    在这里插入图片描述

    分片

    在这里插入图片描述

    Copies and Views

    在这里插入图片描述

    和列表和字典一样。

    非对象绑定复制 view()

    由于上面出现的情况,有些时候需要非对象绑定的复制(自己取的名字),就是a,b指向的内存并非同一个。
    在这里插入图片描述

    Deep Copy copy()

    比view()更极端 这点和list就不一样了(list环境下是浅拷贝)

    在这里插入图片描述

    花里胡哨的Index用法

    传入list|ndarray查询

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    求最值

    在这里插入图片描述

    修改元素

    在这里插入图片描述
    在这里插入图片描述

    Index with Boolean Arrays 你要还是不要

    在这里插入图片描述

    在这里插入图片描述

    The i_x() function

    不懂
    在这里插入图片描述

    Universal Functions

    np.arange()

    在这里插入图片描述

    np.exp()

    在这里插入图片描述

    np.sqrt()

    在这里插入图片描述

    np.add() | +

    在这里插入图片描述

    np.all()

    out 关键字按照教程打出错了,不知为何。
    在这里插入图片描述

    np.any()

    关于out部分还是出错
    在这里插入图片描述

    np.apply_along_axis() #传列 传行 函数处理

    注意:diag()的时候有毛病啊,有毛病的啊,不晓得为什么了,你妹!
    在这里插入图片描述
    在这里插入图片描述

    np.argmax() 返回最大所在的位置(并非是坐标)

    在这里插入图片描述

    np.argmin()

    在这里插入图片描述

    np.argsort() *排序,输出位置,好用

    在这里插入图片描述

    np.average(,weights) 可以加权重

    在这里插入图片描述

    np.bincount() #数有多少个数字,也可以加权重

    只能用于一维的数组,且元素是非负整数
    在这里插入图片描述

    np.ceil() 向上取整

    在这里插入图片描述

    np.clip(a, x1, x2) [x1, x2] 比x1小的变成x1,比x2大的变成x2,还支持组组操作

    在这里插入图片描述

    np.conj() #复数

    在这里插入图片描述

    np.corrcoef() #相关系数矩阵

    np.cov() #协方差阵 (XX^{mathrm{T}}) 要求列样本,而不是一般的行样本

    np.cross() #向量叉乘

    在这里插入图片描述

    np.cumprod() 累积

    在这里插入图片描述

    np.cumsum() 累和

    在这里插入图片描述

    np.diff() 差分

    在这里插入图片描述

    np.dot()

    在这里插入图片描述

    np.floor() 向下取整

    在这里插入图片描述

    np.inner() #內积?

    在这里插入图片描述

    np.inv()

    np.lexsort()

    在这里插入图片描述

    np.max()

    np.maximum() 组组比较

    在这里插入图片描述

    np.mean()

    np.median() #中位数

    在这里插入图片描述

    np.min()

    np.minimum()

    在这里插入图片描述

    np.nonzero() 返回数组非零元的坐标indices

    在这里插入图片描述

    np.outer() # (xx^{mathrm{T}})

    在这里插入图片描述

    np.prod() 数组内元素的乘积

    在这里插入图片描述

    np.re()

    np.round()

    在这里插入图片描述

    np.sort()

    在这里插入图片描述

    np.std() 标准差

    在这里插入图片描述

    np.sum() 可以设定初始值

    在这里插入图片描述

    np.trace() 迹

    在这里插入图片描述

    np.tranpose() #可不单单是转置

    在这里插入图片描述

    np.var() 方差

    在这里插入图片描述

    np.vdot() #向量乘法, 不是向量弄成向量

    在这里插入图片描述

    np.vectorize() #向量版np.apply_along_axis()?

    在这里插入图片描述

    np.where() #适合找indices

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    np.mgrid | np.meshgrid

    numpy.mgrid

  • 相关阅读:
    yii2框架(一)安装
    修改hosts搭建本地站点
    php版本管理工具composer安装及使用
    nodejs学习笔记Node.js 调试命令
    angular自定义指令命名的那个坑
    MongoDB Windows环境安装及配置( 一)
    JavaSE 面试题: 类初始化和实例初始化等
    JavaSE 面试题: 成员变量与局部变量
    JavaSE 面试题: 方法的参数传递机制
    JavaSE 笔试题: 自增变量
  • 原文地址:https://www.cnblogs.com/MTandHJ/p/10528142.html
Copyright © 2011-2022 走看看