机器学习三剑客之numpy

numpy库

简介

numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包。

功能

  • ndarray,一个具有矢量算数运算和复杂广播能力的快速且节省空间的多维数组。
  • 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。
  • 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。
  • 线性代数,随机数生成以及傅里叶变换功能。
  • 用于集成由C,C++,Fortran等语言编写的代码的工具。

具体分析

1.ndarry
  1. 创建ndarray:创建数组最简单的方法就是使用array函数,他接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的numpy数组,其中,嵌套序列(比如有一组等长列表组成的列表)将会别转换为一个多维数组。
  2. 除了np.array之外,还有一些函数可以新建数组:
    • zeros和ones分别可以创建指定长度的全0或是全1数组。
    • Empty可以创建一个没有任何具体值得数组。
    import numpy as np
    
    a = [1, 2, 3, 4]
    b = np.array(a)  # 将列表转换为数组
    print(b)  # [1 2 3 4]
    
    ar_zero = np.zeros([10, 10])  # 创建10行10列的数值为浮点0的矩阵
    ar_ones = np.ones([10, 10])   # 创建10行10列的数值为浮点1的矩阵

    数组是这样的ar_ones和ar_zeros

  3. 创建随机数组
    • 均匀分布

      arr = np.random.rand(10, 10)  # 创建指定形状(例如10行10列)的数组(范围在0,1之间的小数)
      arr_r = np.random.uniform(0, 100)  # 创建指定范围的一个数
      arr_r_r = np.random.randint(0, 100)  # 创建指定范围内的一个整数
    • 正态分布
      np.random.normal(1.75, 0.1, (2, 3))  # 给定均值/标准差/维度的正态分布
  4. 查看数组的属性的用法
    ar_ones = np.ones([10, 10])
    ar_ones.size  # 数组元素个数
    ar_ones.shape  # 数组形状
    ar_ones.ndim  # 数组维度
    ar_ones.dtype  # 数组元素类型
2.数组和标量之间的运算

数组很重要,他可以使我们不编写循环即对数据执行批量运算,这就叫矢量化,大小相等的数组之间的任何算数运算都会讲运算应用到元素级,同样,数组与标量的算数运算会将那个标量值传到各个元素。

arr = np.array([[1., 2., 3.], [4., 5., 6.]])
print(arr)
# [[1. 2. 3.]
#  [4. 5. 6.]]
1/arr
# [[1.         0.5        0.33333333]
#  [0.25       0.2        0.16666667]]
arr-arr
# [[0. 0. 0.]
#  [0. 0. 0.]]
arr*arr
# [[ 1.  4.  9.]
#  [16. 25. 36.]]
arr**0.5
# [[1.         1.41421356 1.73205081]
#  [2.         2.23606798 2.44948974]]
3.基本的索引和切片
  • 在二维数组中,各索引位置的元素不再是标量而是一维数组
  • 可以对各个元素进行递归访问,但是有点麻烦。
  • 可以传入一个一逗号隔开的索引列表来选取单个元素。
  • 在多维数组中,如果省略了后面的索引,则返回对象会是一个维度低一点的nparray。
arr3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
arr3d
#[[[ 1  2  3]
#  [ 4  5  6]]
# [[ 7  8  9]
#  [10 11 12]]]
arr3d[0]
# [[1 2 3]
#  [4 5 6]]
arr3d[0][1]
# [4 5 6]
arr3d[0, 1]
# [4 5 6]
4.数学和统计方法

? 基本数组统计方法

  • 可以通过数组上的一组书写函数对整个数字或某个轴向的数据进行统计计算。
  • sum,mean以及标准差std等聚合计算既可以当做数组的实例方法调用,也可以当做顶级Numpy函数使用。
    arr = np.random.randn(5, 4)  #一个正态分布的数据
    arr
    # [[ 0.95326975  0.77312101 -0.95214153  1.95996848]
    #  [ 0.24917771  0.33556837  2.15445141 -1.25784532]
    #  [-0.80319568 -0.9765313   0.36326416 -0.85973763]
    #  [-1.71753049  1.26597532 -1.16980525  0.03452003]
    #  [ 0.32723967 -1.09855723 -0.21926247  0.67971173]]
    arr.mean()
    # 0.002083038257278563
    np.mean(arr)
    # 0.002083038257278563
    arr.sum()
    # 0.041660765145571266
  • mean和sum这类的函数可以接受一个axis参数(用于计算该轴向上的统计值),最终结果是一个少一维的数组。
    arr = np.random.randn(5, 4)
    arr.mean(axis=1)
    # [-0.7915737   0.90559043  0.07557592 -0.02567472  0.35097451]
    arr.sum(0)
    # [ 3.23951683  2.87480084 -2.95252202 -1.10222588]
  • 其他如cumsum和cumprop之类的方法则不聚合,而是产生一个由中间结果组成的数组。
    arr = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
    arr.cumsum(0)
    # [[ 0  1  2]
    #  [ 3  5  7]
    #  [ 9 12 15]]
    arr.cumprod(1)
    # [[  0   0   0]
    #  [  3  12  60]
    #  [  6  42 336]]
5.线性代数(不太懂 哈哈~~~)
  • 线性代数(如矩阵乘法,矩阵分解,行列式以及其他方阵数学等)是是任何数组库的重要组成部分。
  • numpy提供了一个用于矩阵乘法的dot函数(既是一个数组方法,也是numpy命名空间中的一个函数)
    x = np.array([[1., 2., 3.], [4., 5., 6.]])
    y = np.array([[6., 23.], [-1, 7], [8, 9]])
    x
    # [[1. 2. 3.]
    #  [4. 5. 6.]]
    y
    # [[ 6. 23.]
    #  [-1.  7.]
    #  [ 8.  9.]]
    x.dot(y)
    # [[ 28.  64.]
    #  [ 67. 181.]]
    np.dot(x, y)
    # [[ 28.  64.]
    #  [ 67. 181.]]
  • numpy.linalg 中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的东西。
  • 他们跟MATLIB和R等语言所使用的是相同的行业标准级Fortran库。
  • 下面是常用的numpy.linalg函数:

原文地址:https://www.cnblogs.com/z-x-h/p/12544106.html

时间: 2024-08-02 15:57:51

机器学习三剑客之numpy的相关文章

python爬虫---数据分析三剑客之: Numpy

数据分析三剑客之: Numpy 一丶Numpy的使用 ? numpy 是Python语言的一个扩展程序库,支持大维度的数组和矩阵运算.也支持针对数组运算提供大量的数学函数库 创建ndarray # 1.使用np.array() 创建一维或多维数据 import numpy as np arr = np.array([1,2,3,4,5]) # 一维 arr = np.array([[1,2,3],[4,5,6]])# 二维 ### 注意元素类型: # 1. numpy默认ndarray的所有元素

机器学习之入门Numpy

from numpy import * #导入numpy所有内容到当然命名空间下 jj=[] #创建一个线性表 jj.append(1) #在线性表尾部添加变量 jj.append('hat') #线性表的数据类型可以是不同的 kk={} #创建一个字典 kk['dog']='you' #字典相当于cpp中的map kk[1]=42 #数字和字符串可以作为key a=set([1,2,2,2,3]) #创建一个集合 b=set([2,3,4]) a-b #得到集合a有 而 集合b没有的东西 a|

【机器学习】--Python机器学习库之Numpy

一.前述 NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵. NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随机数生成等功能. 这个库的前身是1995年就开始开发的一个用于数组运算的库.经过了长时间的发展,基本上成了绝大部分Python科学计算的基础包,当然也包括所有提供Python接口的深度学习框架. 二.具体应用 1.背景--为什么使用Numpy? a) 便捷: 对于同样的数值计算任务,使用

数据分析三剑客之一numpy

NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵. 可以用python实现的科学计算包括: 1.一个强大的N维数组对象Array: 2.比较成熟的(广播)函数库: 3.用于整合C/C++和Fortran代码的工具包: 4.实用的线性代数.傅里叶变换和随机数生成函数. 使用的简单概述: 导入包 import numpy 通常会给取别名,便于应用 import numpy as  np      #(推荐使用) 查看版本 np.__version__ 常用函数:

数据分析三剑客之numpy

import numpy as np 一.创建ndarray 两种方式: 1.使用np.array() 2.使用np的routines函数创建 1 np.ones(shape,dtype=None,order='C') # 0 填充 2 np.zeros(shape,dtype=None,order='C') # 1 填充 3 np.full(shape,fill_value,dtype=None,order='C') #fill_value 填充 4 5 np.linsapce(start,s

机器学习三剑客之Matplotlib基本操作

Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形  . 通过 Matplotlib,可以仅需要几行代码,便可以生成绘图,线型图,柱状图,散点图等. 安装命令: pip install Matplotlib 1.生成柱状图: #导包 import matplotlib.pyplot as plt #导入字体库 from matplotlib.font_manager import FontProperties #设置本机字体

机器学习三剑客补充

1. 启动JupyterLabjupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=notebook --ip=0.0.0.0 监听所有ip,允许其他电脑访问 --no-brower 不启动本地浏览器 --notebook-dir 指定根目录 注:发现还是jupyter notebook比jupyter lab好用一些,前者允许notebook中的markdown文本引用目录下的图片等资源,而jupyter lab则可能是增强了安全控制,禁止引

机器学习--matplotlib绘制各种图标

机器学习三剑客:numpy.pandas.matplotlib NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵. pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 柱状图bar from matplotlib import pyplot as plt import matplotlib # 显示图表,

第一节 anaconda+jupyter+numpy简单使用

数据分析:是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律 数据分析三剑客:Numpy,Pandas,Matplotlib 一 Anaconda 1 下载 官网:https://www.anaconda.com/distribution/ 2 安装 https://blog.csdn.net/u012318074/article/details/77075209 3 基本使用 http://python.jobbole.com/86236/ 二 jupyter 1