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

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

  • 一个强大的N维数组对象 ndarray

  • 广播功能函数

  • 整合 C/C++/Fortran 代码的工具

  • 线性代数、傅里叶变换、随机数生成等功能

安装:

pip install --user numpy scipy matplotlib

清华镜像:

pip install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

测试:

from numpy import *
eye(4) #生成对角矩阵 ——》array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])

创建一个 ndarray 只需调用 NumPy 的 array 函数即可:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

参数说明:

名称 描述
object 数组或嵌套的数列
dtype 数组元素的数据类型,可选
copy 对象是否需要复制,可选
order 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
subok 默认返回一个与基类类型一致的数组
ndmin 指定生成数组的最小维度

实例1:

import numpy as np
a = np.array([1,2,3])
print (a)
——》[1 2 3]

实例2:

# 多于一个维度
import numpy as np
a = np.array([[1, 2], [3, 4]]) print (a)
——》[[1 2]
[3 4]]

实例3:

# 最小维度
import numpy as np
a = np.array([1, 2, 3, 4, 5], ndmin = 2)
print (a)
——》[[1 2 3 4 5]]

实例4:

# dtype 参数
import numpy as np
a = np.array([1, 2, 3], dtype = complex)
print (a)
——>[1.+0.j 2.+0.j 3.+0.j]

ndarray 对象由计算机内存的连续一维部分组成,并结合索引模式,将每个元素映射到内存块中的一个位置。内存块以行顺序(C样式)或列顺序(FORTRAN或MatLab风格,即前述的F样式)来保存元素。

数据类型

名称 描述
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 位浮点数(实数部分和虚数部分)

numpy 的数值类型实际上是 dtype 对象的实例,并对应唯一的字符,包括 np.bool_,np.int32,np.float32,等等。

数据类型对象 (dtype)

数据类型对象(numpy.dtype 类的实例)用来描述与数组对应的内存区域是如何使用,它描述了数据的以下几个方面::

  • 数据的类型(整数,浮点数或者 Python 对象)

  • 数据的大小(例如, 整数使用多少个字节存储)

  • 数据的字节顺序(小端法或大端法)

  • 在结构化类型的情况下,字段的名称、每个字段的数据类型和每个字段所取的内存块的部分

  • 如果数据类型是子数组,那么它的形状和数据类型是什么。

字节顺序是通过对数据类型预先设定 <> 来决定的。 < 意味着小端法(最小值存储在最小的地址,即低位组放在最前面)。> 意味着大端法(最重要的字节存储在最小的地址,即高位组放在最前面)。

dtype 对象是使用以下语法构造的:

numpy.dtype(object, align, copy)
  • object - 要转换为的数据类型对象

  • align - 如果为 true,填充字段使其类似 C 的结构体。

  • copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用

实例1:

import numpy as np
# 使用标量类型
dt = np.dtype(np.int32)
print(dt)
——》int32

实例2:

import numpy as np
# int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替
dt = np.dtype('i4')
print(dt)
——》int32

实例3:

import numpy as np
# 字节顺序标注
dt = np.dtype('<i4')
print(dt)
——》int32

每个内建类型都有一个唯一定义它的字符代码,如下:

字符 对应类型
b 布尔型
i (有符号) 整型
u 无符号整型 integer
f 浮点型
c 复数浮点型
m timedelta(时间间隔)
M datetime(日期时间)
O (Python) 对象
S, a (byte-)字符串
U Unicode
V 原始数据 (void)

NumPy 数组属性

NumPy 的数组中比较重要 ndarray 对象属性有:

属性 说明
ndarray.ndim 秩,即轴的数量或维度的数量
ndarray.shape 数组的维度,对于矩阵,n 行 m 列
ndarray.size 数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtype ndarray 对象的元素类型
ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags ndarray 对象的内存信息
ndarray.real ndarray元素的实部
ndarray.imag ndarray 元素的虚部
ndarray.data 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。

最新文章

  1. 做为一个前端工程师,是往node方面转,还是往HTML5方面转
  2. [转]理解I/O Completion Port
  3. git更换仓库地址
  4. matlab怎么定义一个数组
  5. 修改win7登录界面
  6. MySQL通用优化手册
  7. ros使用RPLIDAR激光雷达
  8. 06---Java基础、面向对象
  9. 转:String.Empty、string=”” 和null的区别
  10. CSS selectors for Selenium with example,selenium IDE
  11. spring boot基础 入门
  12. P层
  13. C#操作xml SelectNodes,SelectSingleNode总是返回NULL
  14. 选择提供器 - 选择监听器(selection provider-selection listener)模式
  15. plsql auto 常用语法
  16. SqlServer 递归查询树
  17. mongoDB 32位 安装包地址
  18. 【解决】缺少libstdc++.so.6库的原因及解决的方法
  19. [小北De编程手记] : Lesson 05 - Selenium For C# 之 API 下
  20. application/x-www-form-urlencode 和 multiple/form-data

热门文章

  1. python数据类型与基础运算
  2. 使用nmtui命令解决network-scripts目录下无网卡对应配置文件问题
  3. 安卓记账本开发学习day5之版本兼容问题
  4. Vue使用PostCSS 插件和如何使用sass及常用语法
  5. 判断是否微信,qq等登陆。进去不同的页面下载
  6. 封闭的一个多月,老菜鸟的 机械手和AGV 自动搬运小项目总结
  7. Matlab学习笔记 绘图
  8. 网络协议OSI模型-TCP/IP-三次握手
  9. CentOS 8配置本地yum源及DNF简介
  10. 10个最危险的Linux命令,希望你牢记在心