Numpy

  Numpy 是 Python 数据科学计算的核心库,提供了高性能的多维数组对象及处理数组的工具

使用方式

  1. import numpy as np

数组

生成数组

 简单生成

  1. a = np.array([1, 2, 3])
  2. # <class 'numpy.ndarray'>
  3. # [1 2 3]
  4.  
  5. a = np.array([1, '2', 3]) # 取值为字符串
  6. # <class 'numpy.ndarray'>
  7. # ['1' '2' '3']
  8.  
  9. a = np.array([1, 2.0, 3]) # 取值去float
  10. # <class 'numpy.ndarray'>
  11. # [1. 2. 3.] 

dtype类型

  1. a = np.array([1, 2.0, 3],dtype=np.str)
  2. # <class 'numpy.ndarray'>
  3. # ['1' '2.0' '3']
  4.  
  5. # 其他类型
  6. # np.int64 带符号的64位整数
  7. # np.float32 标准双精度浮点数
  8. # np.complex 显示为128位浮点数的复数
  9. # np.bool 布尔值:True值和False值
  10. # np.object Python对象
  11. # np.string_ 固定长度字符串
  12. # np.unicode_ 固定长度Unicode

copy参数

  1. # copy参数 默认True
  2. a = np.array([1, '2', 3])
  3. b = np.array(a, copy=True)
  4. c = np.array(a, copy=False)
  5. # 635743528800
  6. # 635743684528
  7. # 635743528800

初始化占位符

  1. # 3行4列
  2. a = np.zeros((3, 4))
  3. # <class 'numpy.ndarray'>
  4. # [[0. 0. 0. 0.]
  5. # [0. 0. 0. 0.]
  6. # [0. 0. 0. 0.]]
  7.  
  8. # 2行3列4纵
  9. a = np.ones((2, 3, 4,2), dtype=np.int16)
  10. # <class 'numpy.ndarray'>
  11. # [[[1 1 1 1]
  12. # [1 1 1 1]
  13. # [1 1 1 1]]
  14. #
  15. # [[1 1 1 1]
  16. # [1 1 1 1]
  17. # [1 1 1 1]]]
  18.  
  19. # 创建均匀间隔的数组(步进值)
  20. a = np.arange(10, 25, 5)
  21. # <class 'numpy.ndarray'>
  22. # [10 15 20]
  23.  
  24. # 创建均匀间隔的数组(样本数)
  25. a = np.linspace(0, 2, 9)
  26. # <class 'numpy.ndarray'>
  27. # [0. 0.25 0.5 0.75 1. 1.25 1.5 1.75 2. ]
  28.  
  29. # 创建常数数组
  30. a = np.full((2,2),7)
  31. # <class 'numpy.ndarray'>
  32. # [[7 7]
  33. # [7 7]]
  34.  
  35. # 创建2x2单位矩阵
  36. a = np.eye(2)
  37. # <class 'numpy.ndarray'>
  38. # [[1. 0.]
  39. # [0. 1.]]
  40.  
  41. # 创建随机值的数组
  42. a = np.random.random((2,2))
  43. # <class 'numpy.ndarray'>
  44. # [[0.43922179 0.48453874]
  45. # [0.753194 0.09264839]]
  46.  
  47. # 创建空数组
  48. a = np.empty((3,2))
  49. # <class 'numpy.ndarray'>
  50. # [[1.39069238e-309 1.39069238e-309]
  51. # [1.39069238e-309 1.39069238e-309]
  52. # [1.39069238e-309 1.39069238e-309]]

输入输出

保存/读取

  1. # 保存为npy文件
  2. a = np.full((10,10),7)
  3. # 保存
  4. np.save('my_array', a)
  5. # 读取
  6. np.load('my_array.npy')
  7.  
  8. # 保存文本文档
  9. np.savetxt("myarray.txt", a, delimiter=",")
  10. # 读取
  11. np.loadtxt("myarray.txt")
  12. # 读取excel
  13. np.genfromtxt("my_fle.csv", delimiter=',')

数组信息

  1. a = np.zeros((3, 4))
  2. # [[0. 0. 0. 0.]
  3. # [0. 0. 0. 0.]
  4. # [0. 0. 0. 0.]]
  5.  
  6. # 数组形状,几行几列
  7. print(a.shape)
  8. # (3, 4)
  9.  
  10. # 数组长度
  11. print(len(a))
  12. # 3
  13.  
  14. # 几维数组
  15. print(a.ndim)
  16. # 2
  17.  
  18. # 数组有多少元素
  19. print(a.size)
  20. # 12
  21.  
  22. # 数据类型
  23. print(a.dtype)
  24. # float64
  25.  
  26. # 数据类型的名字
  27. print(a.dtype.name)
  28. # float64
  29.  
  30. # 数据类型转换
  31. print(a.astype(int))
  32. # [[0 0 0 0]
  33. # [0 0 0 0]
  34. # [0 0 0 0]]

  

索引、切片、比较

切片

  1. import numpy as np
  2.  
  3. matrix = np.array([
  4. [5, 10, 15],
  5. [20, 25, 30],
  6. [35, 40, 45]
  7. ])
  8.  
  9. # 取所有行的第2列
  10. print(matrix[:,1])
  11. # [10 25 40]
  12.  
  13. # 取所有行的前1、2列
  14. print(matrix[:,0:2])
  15. # [[ 5 10]
  16. # [20 25]
  17. # [35 40]]
  18.  
  19. # 取2、3行的前1、2列
  20. print(matrix[1:3,0:2])
  21. # [[20 25]
  22. # [35 40]]

比较

  1. import numpy as np
  2.  
  3. # 获取比较结果
  4. matrix = np.array([
  5. [5, 10, 15],
  6. [20, 25, 30],
  7. [35, 40, 45]
  8. ])
  9. print(matrix == 25)
  10. # [[False False False]
  11. # [False True False]
  12. # [False False False]]
  13.  
  14. # 根据比较结果取值
  15. vector = np.array([5, 10, 15, 20])
  16. equal_to_ten = (vector == 10)
  17. print(equal_to_ten)
  18. print(vector[equal_to_ten])
  19. # [False True False False]
  20. # [10]
  21.  
  22. # 根据比较结果切片取值
  23. matrix = np.array([
  24. [5, 10, 15],
  25. [20, 25, 30],
  26. [35, 40, 45]
  27. ])
  28. second_column_25 = (matrix[:,1] == 25)
  29. print(second_column_25)
  30. print(matrix[second_column_25, :])
  31. # [False True False]
  32. # [[20 25 30]]
  33.  
  34. # 与操作 去比较结果
  35. vector = np.array([5, 10, 15, 20])
  36. equal_to_ten_and_five = (vector == 10) & (vector == 5)
  37. print(equal_to_ten_and_five)
  38. # [False False False False]
  39.  
  40. # 或操作 去比较结果
  41. vector = np.array([5, 10, 15, 20])
  42. equal_to_ten_or_five = (vector == 10) | (vector == 5)
  43. print(equal_to_ten_or_five)
  44. # [ True True False False]
  45.  
  46. # 根据比较结果赋值
  47. vector = np.array([5, 10, 15, 20])
  48. equal_to_ten_or_five = (vector == 10) | (vector == 5)
  49. vector[equal_to_ten_or_five] = 50
  50. print(vector)
  51. # [50 50 15 20]

数组计算

聚合函数

  1. # 数据汇总
  2. vector = np.array([5, 10, 15, 20])
  3. print(vector.sum())
  4. # 50
  5.  
  6. # 二维矩阵汇总
  7. matrix = np.array([
  8. [5, 10, 15],
  9. [20, 25, 30],
  10. [35, 40, 45]
  11. ])
  12. print(matrix.sum())
  13. # 225
  14.  
  15. # 二维横向汇总
  16. print(matrix.sum(axis=1))
  17. # [ 30 75 120]
  18.  
  19. # 二维竖向汇总
  20. print(matrix.sum(axis=0))
  21. # [60 75 90]

数组运算

  1. a = np.array([20, 30, 40, 50])
  2. b = np.arange(4)
  3. print(a)
  4. print(b)
  5. # [20 30 40 50]
  6. # [0 1 2 3]
  7.  
  8. # 减
  9. c = a - b
  10. print(c)
  11. # [20 29 38 47]
  12.  
  13. # 加
  14. c = a + b
  15. print(c)
  16. # [20 31 42 53]
  17.  
  18. # 乘
  19. c = a * b
  20. print(c)
  21. # [ 0 30 80 150]
  22.  
  23. # 除
  24. c = b / a
  25. print(c)
  26. # [0. 0.03333333 0.05 0.06 ]
  27.  
  28. # 2次幂
  29. print(b**2)
  30. # [0 1 4 9]
  31.  
  32. # 点积 https://www.jianshu.com/p/482abac8798c
  33. A = np.array( [[1,1],
  34. [0,1]] )
  35. B = np.array( [[2,0],
  36. [3,4]] )
  37. print(A)
  38. print(B)
  39. print(A.dot(B))
  40. print(np.dot(A, B))
  41. # [[1 1]
  42. # [0 1]]
  43. # [[2 0]
  44. # [3 4]]
  45. # [[5 4]
  46. # [3 4]]
  47. # [[5 4]
  48. # [3 4]]
  49.  
  50. import numpy as np
  51. B = np.arange(3)
  52. print(B)
  53. # [0 1 2]
  54.  
  55. # 幂
  56. print(np.exp(B))
  57. # [1. 2.71828183 7.3890561 ]
  58.  
  59. # 平方根
  60. print(np.sqrt(B))
  61. # [0. 1. 1.41421356]

数组操作

  1. import numpy as np
  2.  
  3. # floor向下取整
  4. a = np.floor(10*np.random.random((3,4)))
  5. print(a)
  6. # [[1. 5. 3. 3.]
  7. # [3. 3. 2. 6.]
  8. # [4. 9. 5. 3.]]
  9.  
  10. # ravel合为一行
  11. print(a.ravel())
  12. # [1. 5. 3. 3. 3. 3. 2. 6. 4. 9. 5. 3.]
  13.  
  14. # 更换shape形状
  15. a.shape = (6, 2)
  16. print(a)
  17. # [[1. 5.]
  18. # [3. 3.]
  19. # [3. 3.]
  20. # [2. 6.]
  21. # [4. 9.]
  22. # [5. 3.]]
  23.  
  24. # 横竖转换
  25. print(a.T)
  26. # [[1. 3. 3. 2. 4. 5.]
  27. # [5. 3. 3. 6. 9. 3.]]
  28.  
  29. # -1 默认值
  30. print(a.reshape(3,-1))
  31. # [[1. 5. 3. 3.]
  32. # [3. 3. 2. 6.]
  33. # [4. 9. 5. 3.]]
  34.  
  35. # 拼接
  36. a = np.floor(10*np.random.random((2,2)))
  37. b = np.floor(10*np.random.random((2,2)))
  38. print(a)
  39. # [[5. 7.]
  40. # [2. 9.]]
  41. print(b)
  42. # [[7. 4.]
  43. # [7. 7.]]
  44. print(np.hstack((a,b))) # 横向拼接
  45. # [[5. 7. 7. 4.]
  46. # [2. 9. 7. 7.]]
  47. print(np.vstack((a,b))) # 纵向拼接
  48. # [[5. 7.]
  49. # [2. 9.]
  50. # [7. 4.]
  51. # [7. 7.]]
  52.  
  53. # 分割
  54. a = np.floor(10*np.random.random((2,12)))
  55. print(a)
  56. # [[4. 7. 8. 2. 0. 1. 5. 7. 1. 2. 1. 2.]
  57. # [5. 8. 9. 2. 5. 5. 8. 9. 5. 4. 7. 8.]]
  58.  
  59. print(np.hsplit(a,3)) # 横向切割3份
  60. # [array([[4., 7., 8., 2.],
  61. # [5., 8., 9., 2.]]), array([[0., 1., 5., 7.],
  62. # [5., 5., 8., 9.]]), array([[1., 2., 1., 2.],
  63. # [5., 4., 7., 8.]])]
  64.  
  65. print(np.vsplit(a,2)) # 纵向切割3份
  66. # [array([[4., 7., 8., 2., 0., 1., 5., 7., 1., 2., 1., 2.]]), array([[5., 8., 9., 2., 5., 5., 8., 9., 5., 4., 7., 8.]])]
  67.  
  68. print(np.hsplit(a,(3,4))) # 横向切割3,4
  69. # [array([[9., 3., 0.],
  70. # [1., 0., 4.]]), array([[7.],
  71. # [5.]]), array([[8., 5., 7., 7., 4., 9., 8., 2.],
  72. # [6., 7., 6., 4., 9., 5., 9., 3.]])]

拷贝

  1. # 赋值
  2. a = np.arange(12)
  3. b = a
  4. # a and b are two names for the same ndarray object
  5. # b is a
  6. # True
  7. b.shape = 3,4
  8. print(a.shape)
  9. print(id(a))
  10. print(id(b))
  11. # (3, 4)
  12. # 115753432
  13. # 115753432
  14.  
  15. # 浅拷贝
  16. c = a.view()
  17. # c is a
  18. # Flase
  19. c.shape = 2,6
  20. #print a.shape
  21. c[0,4] = 1234
  22. print(a)
  23. # [[ 0 1 2 3]
  24. # [1234 5 6 7]
  25. # [ 8 9 10 11]]
  26.  
  27. # 深拷贝
  28. d = a.copy()
  29. # d is a
  30. # Flase
  31. d[0,0] = 9999
  32. print(d)
  33. print(a)
  34. # [[9999 1 2 3]
  35. # [1234 5 6 7]
  36. # [ 8 9 10 11]]
  37. # [[ 0 1 2 3]
  38. # [1234 5 6 7]
  39. # [ 8 9 10 11]]

  

 

机器学习【工具】:Numpy基础的更多相关文章

  1. 【Numpy】python机器学习包Numpy基础知识学习

    一.安装:在之前的博客中已经写过:http://www.cnblogs.com/puyangsky/p/4763234.html 二.python数组切片知识: python中序列类有list.str ...

  2. 机器学习- Numpy基础 吐血整理

    Numpy是专门为数据科学或者数据处理相关的需求设计的一个高效的组件.听起来是不是挺绕口的,其实简单来说就2个方面,一是Numpy是专门处理数据的,二是Numpy在处理数据方面很牛逼(肯定比Pytho ...

  3. 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算

    http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...

  4. 你不得不看的Python机器学习工具

    IEEE Spectrum排行榜第一,Skill UP排名第一的开发工具,Stack Overflow年度调查中程序员最感兴趣的选择,Stack Overflow 6月份访问量最多的编程语言..... ...

  5. 科学计算工具-Numpy初探

    Numpy基础数据结构 Numpy数组是一个多维数组,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的原数据 导入该库: import numpy as np 多维数组ndarray ...

  6. 利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

  7. 微软开源自动机器学习工具NNI安装与使用

    微软开源自动机器学习工具 – NNI安装与使用   在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到最佳模型的过程了.对于初学者来说,常常是无从下手.即使是对于有经验的算法工程师 ...

  8. NumPy 基础用法

    NumPy 是高性能科学计算和数据分析的基础包. 它是 pandas 等其他各种工具的基础. 主要功能: ndarray 一个多维数组结构, 高效且节省空间 无需循环对整组数据进行快速运算的数学函数 ...

  9. 机器学习---笔记----Python基础

    一. python简介 1. python 具有丰富强大的库,常被称为胶水语言,能够把用其他语言制作的各种模块很轻松地联结在一起 2. python强制使用空白符(white space)作为语句缩进 ...

  10. [转]python与numpy基础

    来源于:https://github.com/HanXiaoyang/python-and-numpy-tutorial/blob/master/python-numpy-tutorial.ipynb ...

随机推荐

  1. laravel数据库配置

    1.说明,查看laravel数据库配置 项目名/config/database.php     'default' => env('DB_CONNECTION', 'mysql') 2.数据开发 ...

  2. 【hadoop】 hdfs shell 命令交互

    1.put 本地文件上传至hdfs中 2. cat 查看内容 3. 删除文件,文件夹 4. ls 5. copyFromLocal 复制本地文件到HDFS , copyToLocal hdfs 复制到 ...

  3. [PHP] 05 - Cookie & Session

    故事背景 同 http, html, REST API 一样属于基础性的知识内容. [Node.js] 07 - Html and Http [Node.js] 08 - Web Server and ...

  4. android bionic c 对比 gnu c

    Bionic 是一个BSD标准的C库,用在android平台上面的. Android 是一个不完全开源的系统. android的kernel使用的是基于linux的,linux使用的是GPL2的开源标 ...

  5. 移动端html的overflow:hidden属性失效问题

    这第一次做手机端网页,在交付测试的时候发现一个问题, 就是body的宽度,我设置了overflow:hidden,在谷歌调试的时候确实是不能滑动的,但是在手机端测试的时候发现,overflow:hid ...

  6. 两种简单实现菜单高亮显示的JS类(转载)

    两种简单实现菜单高亮显示的JS类   近期在写一个博客管理后台的前端,涉及在同一页面两种高亮显示当前菜单的需求.记得当年写静态页时,为了实现高亮都是在每个页面加不同的样式,呵.高亮显示我觉得对于web ...

  7. puppet cron资源管理

    1.可用参数: ensure      ensure => {present|absent},   决定该计划任务的目标状态,present 如该cron不存在,则添加;absent 如该cro ...

  8. 如何使用swfobject(中文版)

    1.SWFObject是什么? SWFObject 2提供两种优化flash播放器的嵌入方法:基于标记的方法和依赖于js的方法. SWFObject 2提供一个js的API,为嵌入SWF文件和获取Fl ...

  9. PHP 代 码 操 作 文 件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. Kernel parameter requirements ( Linux DB2)

    Kernel parameter requirements ( Linux DB2) https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/ ...