VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • 初识人工智能(一):数据分析(二):numpy科学计算基础库(一)

1. numpy科学计算基础库

1.1 什么是numpy

NumPy(Numerical Python)是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy的前身Numeric最早是由Jim Hugunin与其它协作者共同开发,2005 年,Travis Oliphant在Numeric中结合了另一个同性质的程序库Numarray的特色,并加入了其它扩展而开发了NumPy。NumPy为开放源代码并且由许多协作者共同维护开发。

NumPy是一个运行速度非常快的数学库,主要用于数组计算,包含:

  • 一个强大的N维数组对象 ndarray
  • 广播功能函数
  • 整合 C/C++/Fortran 代码的工具
  • 线性代数、傅里叶变换、随机数生成等功能

1.2 创建数组(矩阵)


  1. # coding=utf-8
  2. import numpy as np
  3.  
  4. #使用numpy生成数组,得到ndarray的类型
  5. t1 = np.array([1,2,3,])
  6. print(t1)
  7. print(type(t1))
  8.  
  9. t2 = np.array(range(10))
  10. print(t2)
  11. print(type(t2))
  12.  
  13. t3 = np.arange(4,10,2)
  14. print(t3)
  15. print(type(t3))
  16. print(t3.dtype)

运行结果

1.3 数据类型

名称 描述
bool_ 布尔型数据类型(True 或者 False)
int_ 默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc 与 C 的 int 类型一样,一般是 int32 或 int 64
intp 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8 字节(-128 to 127)
int16 整数(-32768 to 32767)
int32 整数(-2147483648 to 2147483647)
int64 整数(-9223372036854775808 to 9223372036854775807)
uint8 无符号整数(0 to 255)
uint16 无符号整数(0 to 65535)
uint32 无符号整数(0 to 4294967295)
uint64 无符号整数(0 to 18446744073709551615)
float_ float64 类型的简写
float16 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_ complex128 类型的简写,即 128 位复数
complex64 复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128 复数,表示双 64 位浮点数(实数部分和虚数部分)

  1. # coding=utf-8
  2. import numpy as np
  3. import random
  4.  
  5. # int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替
  6. t1 = np.array(range(1,4),dtype="i1")
  7. print(t1)
  8. print(t1.dtype)
  9.  
  10. ##numpy中的bool类型
  11. t2 = np.array([1,1,0,1,0,0],dtype=bool)
  12. print(t2)
  13. print(t2.dtype)
  14.  
  15. #调整数据类型
  16. t3 = t2.astype("int8")
  17. print(t3)
  18. print(t3.dtype)
  19.  
  20. #numpy中的小数
  21. t4 = np.array([random.random() for i in range(10)])
  22. print(t4)
  23. print(t4.dtype)
  24.  
  25. t5 = np.round(t4,2)
  26. print(t5)

运行结果:

1.4 数组的形状


  1. # coding=utf-8
  2. import numpy as np
  3.  
  4. a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
  5. print(a)
  6.  
  7. #查看数组形状
  8. print(a.shape)
  9.  
  10. #修改数组形状
  11. print(a.reshape(3,4))
  12.  
  13. #原数组形状不变
  14. print(a.shape)
  15.  
  16. b = a.reshape(3,4)
  17.  
  18. print(b.shape)
  19.  
  20. print(b)
  21.  
  22. #把数组转化为1维度数据
  23. print(b.reshape(1,12))
  24.  
  25. print(b.flatten())

运行结果:

1.5 数组和数的计算


  1. # coding=utf-8
  2. import numpy as np
  3.  
  4. a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
  5.  
  6. print(a)
  7.  
  8. #加法减法
  9. print(a+5)
  10. print(a-5