zoukankan      html  css  js  c++  java
  • (原创)机器学习之numpy库中常用的函数介绍(一)

    1. mat()

    mat()与array的区别:

    mat是矩阵,数据必须是2维的,是array的子集,包含array的所有特性,所做的运算都是针对矩阵来进行的。

    array是数组,数据可以是多维的,所做的运算都是针对数组来进行的

    (1) 数据能表示的维度不同,array数据可以是多维的,mat的数据必须是2维的。

    array能表示超过2维的数据,而mat不能:

    clip_image001

    对于2维的数据,array和mat的表示形式完全一样(但运算不一样):

    clip_image002

    (2) 把array转换为mat

    clip_image003

    (3) matrix 和 array 都可以通过objects后面加.T 得到其转置。但是matrix objects 还可以在后面加 .H 得到共轭矩阵, 加 .I 得到逆矩阵。

    clip_image004

    clip_image005

    (4) array遵从逐个元素的运算,array的类型的a和b的a*b的运算,相当与MATLAB中的a.*b的运算。

    数组a,b的点乘乘法运算a*b (逐个元素的运算):

    clip_image006

    数组a,b的矩阵乘法运算:

    clip_image007

    相当于矩阵A,B的矩阵乘法运算:

    clip_image008

    (5) **运算不一样

    对于array a,a**2运算相当于对于a的元素逐个求平方:

    clip_image009

    对于mat a,a**2运算相当于矩阵相乘a*a:

    clip_image010

    2. list和array的区别

    (1) list是python的内置数据类型,list中的数据类型不必相同,主要用来作索性,可以通过索引查找数值,但不能对整个列表进行数值运算

    clip_image011

    但是可以进行+运算,表示的是两个列表的拼接:
    clip_image012

    (2) array的中的类型必须全部相同(同属于int,float,duoble)才能进行数组间的运算,否则也只能作索引:

    clip_image013

    clip_image014

    3. shape() 读取矩阵的各个维度的长度

    (1)shape() 返回的是各个维度的长度的列表:

    clip_image015

    clip_image016

    (2)shape[n ]表示获取第n个维度的长度

    clip_image017

    clip_image018

    4. random.uniform()方法

    uniform(x,y): 随机产生一个在[x, y]范围内的实数,返回一个浮点数。

    clip_image019

    5. mean()方法

    mean()方法为求平均值的方法:

    mean(a, axis=None, dtype=None, out=None, skipna=False, keepdims=False)

    a: 输入的数组,array类型

    axis: None:计算数组中的所有值的平均值

    =0:以列为单位计算数组中每一列的所有值的平均值;

    =1:以行为单位计算数组中每一行的所有值的平均值

    dtype: 为指定数组中的元素的类型,默认为float64

    out: 如果提供,则为计算的输出结果保存的数组,大小要和输出结果的数组大小相同

    skipna: 如果设置为true,则计算时跳过为NA的值

    keepdims: 如果设置为true,输出结果将保持为1的维度,即计算结果放在一个数组内

    clip_image020

    6. tile() 方法

    tile英文单词意思:拼贴。tile(A, n)功能:将数组A重复n次,构成一个新的数组。

    A的类型:array, list, tuple, dict, matrix,int, string, float,bool

    n的类型: tuple,list, dict, array, int,bool,不可以是float, string, matrix

    (1) 当n为一个整数时

    clip_image021

    (2) 当n为list,tuple

    clip_image022

    (3) 当A的维度 < n的长度时

    tile(A, n)将A中的所有元素作为单元,按n变成一个新的数组,以上为例子。

    (4) 当A的维度 > n的长度时

    n的长度不足为A的维度,即在n的前面加上(A的维度-n的长度),变成与A的维度相同的长度,再进行重复:

    clip_image023

    以上的a的维度为2,n的长度为1,n自动补充为[2-1, 3] =[1, 3], 与以下等效:

    clip_image024

    7. argsort()方法

    argsort(a):对数组或元组a进行升序排序, 返回的是升序之后的各个元素在原来a未升序之前的下标,即返回升序之后对应的下标数组。

    clip_image025

    降序排序:

    (1) 获取升序排列之后的最后一个下标

    clip_image026

    (2) 或者使用argsort(-a)进行降序排列,其中a只能是含相同数据类型的数组,不能是列表

    clip_image027

    8. transpose( )方法

    装置,可以装置任何类型mat,list,array,当类=类型为mat的时候,等同于A.T

    clip_image028

    9. sum

    sum(a, axis=None, dtype=None, out=None, skipna=False, keepdims=False)

    a: 输入的数组,array类型

    axis: None:计算数组中的所有值的和

    =0:以列为单位计算数组中每一列的所有值的和;

    =1:以行为单位计算数组中每一行的所有值的和

    dtype: 为指定数组中的元素的类型,默认为float64

    out: 如果提供,则为计算的输出结果保存的数组,大小要和输出结果的数组大小相同

    skipna: 如果设置为true,则计算时跳过为NA的值

    keepdims: 如果设置为true,输出结果将保持为1的维度,即计算结果放在一个数组内

    clip_image029

    10. get()方法

    dict.get(key, default=None) key -- 字典中要查找的键。default -- 如果指定键的值不存在时,返回该默认值。

    clip_image030

    11. operator.itemgetter ()

    operator.itemgetter(n)定义了一个用来获取对象第n个域数据的函数。

    clip_image031

    12. iteritems()

    返回字典的一个迭代器。返回一个可以调用的对象(可以从操作对象中提取item)

    clip_image032

    13. sorted() 方法

    对list或者iterable进行排列

    sorted(iterable, cmp, key, reverse)

    iterable指定要排序的list或者iterable,

    cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,

    key为函数,指定取待排序元素的哪一个域进行排序,

    reverse默认为false(升序排列),定义为True时将按降序排列。

    clip_image033

    与sort区别的是,sort会改变原来对象的顺序:

    ndarray.sort(axis=-1, kind='quicksort', order=None)

    axis:排序的维度,0表示按行,1表示按列

    kind:排序的算法,提供了快排、混排、堆排:’quicksort’, ‘mergesort’, ‘heapsort’

    order:排列的顺序

    clip_image034

          -  tany 2017年10月1日于杭州

    人工智能从入门到专家教程资料:https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.38270209gU11fS&id=562189023765

  • 相关阅读:
    HTML DOM clearInterval() 方法
    clone() 方法
    Java EE 6体系结构的变革
    我们看人的眼光
    NetBeans 时事通讯(刊号 # 44 Feb 10, 2009)
    jBPM 与项目的适用性探讨
    Java EE 6体系结构的变革
    jBPM 与项目的适用性探讨
    系分又挂了 :)
    NetBeans 时事通讯(刊号 # 44 Feb 10, 2009)
  • 原文地址:https://www.cnblogs.com/tan-v/p/7617743.html
Copyright © 2011-2022 走看看