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

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

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

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

使用 pip 安装 :

pip3 install --user numpy scipy matplotlib

--user 选项可以设置只安装在当前的用户下,而不是写入到系统目录。

默认情况使用国外线路,国外太慢,我们使用清华的镜像就可以:

pip3 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.]])

NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。

ndarray 对象是用于存放同类型元素的多维数组。

ndarray 中的每个元素在内存中都有相同存储大小的区域。

ndarray 内部由以下内容组成:

  • 一个指向数据(内存或内存映射文件中的一块数据)的指针。

  • 数据类型或 dtype,描述在数组中的固定大小值的格子。

  • 一个表示数组形状(shape)的元组,表示各维度大小的元组。

  • 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

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

实例 1

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

实例 2

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

实例 3

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

实例 4

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

NumPy 数据类型

数据类型对象 (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)

实例 2

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

实例 3

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

实例 4

# 首先创建结构化数据类型
import numpy as np
dt = np.dtype([('age',np.int8)])
print(dt)

实例 5

# 将数据类型应用于 ndarray 对象
import numpy as np
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print(a)

实例 6

# 类型字段名可以用于存取实际的 age 列
import numpy as np
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print(a['age'])

NumPy 数组属性

NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。

在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。

很多时候可以声明 axis。axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。

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

实例

import numpy as np
a = np.arange(24)
print (a.ndim)
# a 现只有一个维度
# 现在调整其大小
b = a.reshape(2,4,3)
# b 现在拥有三个维度
print (b.ndim)
#ndarray.ndim 用于返回数组的维数,等于秩

实例

import numpy as np
a = np.array([[1,2,3],[4,5,6]])
print (a.shape)

实例

import numpy as np
a = np.array([[1,2,3],[4,5,6]])
a.shape = (3,2)
print (a)

实例

import numpy as np
a = np.array([[1,2,3],[4,5,6]])
b = a.reshape(3,2)
print (b)

NumPy 创建数组

umpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组:

numpy.empty(shape, dtype = float, order = 'C')

实例

import numpy as np
x = np.empty([3,2], dtype = int)
print (x)

numpy.zeros

创建指定大小的数组,数组元素以 0 来填充:

mport numpy as np# 默认为浮点数
x = np.zeros(5)
print(x)# 设置类型为整数
y = np.zeros((5,), dtype = int)
print(y)# 自定义类型
z = np.zeros((2,2), dtype = [('x', 'i4'), ('y', 'i4')])
print(z)

numpy.ones

创建指定形状的数组,数组元素以 1 来填充:


import numpy as np# 默认为浮点数
x = np.ones(5)
print(x)# 自定义类型
x = np.ones([2,2], dtype = int)
print(x)

NumPy 从已有的数组创建数组

numpy.asarray

numpy.asarray 类似 numpy.array,但 numpy.asarray 参数只有三个,比 numpy.array 少两个。

numpy.asarray(a, dtype = None, order = None)

numpy.frombuffer

numpy.frombuffer 用于实现动态数组。

numpy.frombuffer 接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象。

numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)

注意:buffer 是字符串的时候,Python3 默认 str 是 Unicode 类型,所以要转成 bytestring 在原 str 前加上 b。

NumPy 从数值范围创建数组

numpy.arange

numpy 包中的使用 arange 函数创建数值范围并返回 ndarray 对象,函数格式如下:

numpy.arange(start, stop, step, dtype)

numpy.linspace

numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

NumPy 切片和索引

ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。

ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

实例

import numpy as np
a = np.arange(10)
b = a[2:7:2] # 从索引 2 开始到索引 7 停止,间隔为 2
print(b)

NumPy 高级索引

实例

import numpy as np
x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0,1,2], [0,1,0]]
print (y)

NumPy 广播(Broadcast)

广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。

如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。

实例

import numpy as np
a = np.array([1,2,3,4])
b = np.array([10,20,30,40])
c = a * b
print (c)

实例

import numpy as np
a = np.array([[ 0, 0, 0], [10,10,10], [20,20,20], [30,30,30]])
b = np.array([1,2,3])
bb = np.tile(b, (4, 1)) # 重复 b 的各个维度
print(a + bb)

简单理解:对两个数组,分别比较他们的每一个维度(若其中一个数组没有当前维度则忽略),满足:

  • 数组拥有相同形状。
  • 当前维度的值相等。
  • 当前维度的值有一个是 1。

若条件不满足,抛出 "ValueError: frames are not aligned" 异常。

NumPy 迭代数组

NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式。

迭代器最基本的任务的可以完成对数组元素的访问。

接下来我们使用 arange() 函数创建一个 2X3 数组,并使用 nditer 对它进行迭代。

实例

import numpy as np
a = np.arange(6).reshape(2,3)
print ('原始数组是:')
print (a) print ('\n')
print ('迭代输出元素:')
for x in np.nditer(a): print (x, end=", " )
print ('\n')

修改数组形状

翻转数组

修改数组维度

连接数组

分割数组

数组元素的添加与删除

NumPy 位运算

注:也可以使用 "&"、 "~"、 "|" 和 "^" 等操作符进行计算。

NumPy 字符串函数

NumPy 数学函数

NumPy 包含大量的各种数学运算的函数,包括三角函数,算术运算的函数,复数处理函数等。

三角函数


import numpy as npa = np.array([0,30,45,60,90])
print ('不同角度的正弦值:')
# 通过乘 pi/180 转化为弧度
print (np.sin(a*np.pi/180))
print ('\n')
print ('数组中角度的余弦值:')
print (np.cos(a*np.pi/180))
print ('\n')
print ('数组中角度的正切值:')
print (np.tan(a*np.pi/180))

舍入函数

numpy.around() 函数返回指定数字的四舍五入值。


import numpy as npa = np.array([1.0,5.55,  123,  0.567,  25.532])
print  ('原数组:')
print (a)
print ('\n')
print ('舍入后:')
print (np.around(a))
print (np.around(a, decimals =  1))
print (np.around(a, decimals =  -1))

numpy.floor()

numpy.floor() 返回小于或者等于指定表达式的最大整数,即向下取整。


import numpy as npa = np.array([-1.7,  1.5,  -0.2,  0.6,  10])
print ('提供的数组:')
print (a)
print ('\n')
print ('修改后的数组:')
print (np.floor(a))

numpy.ceil()

numpy.ceil() 返回大于或者等于指定表达式的最小整数,即向上取整。


import numpy as npa = np.array([-1.7,  1.5,  -0.2,  0.6,  10])
print  ('提供的数组:')
print (a)
print ('\n')
print ('修改后的数组:')
print (np.ceil(a))

NumPy 算术函数

NumPy 算术函数包含简单的加减乘除: add()subtract()multiply()divide()

需要注意的是数组必须具有相同的形状或符合数组广播规则。

实例


import numpy as np a = np.arange(9, dtype = np.float_).reshape(3,3)
print ('第一个数组:')
print (a)
print ('\n')
print ('第二个数组:')
b = np.array([10,10,10])
print (b)
print ('\n')
print ('两个数组相加:')
print (np.add(a,b))
print ('\n')
print ('两个数组相减:')
print (np.subtract(a,b))
print ('\n')
print ('两个数组相乘:')
print (np.multiply(a,b))
print ('\n')
print ('两个数组相除:')
print (np.divide(a,b))

numpy.reciprocal()

numpy.reciprocal() 函数返回参数逐元素的倒数。如 1/4 倒数为 4/1

numpy.power()

numpy.power() 函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。

numpy.mod()

numpy.mod() 计算输入数组中相应元素的相除后的余数。 函数 numpy.remainder() 也产生相同的结果。

NumPy 排序、条件刷选函数

numpy.sort()

numpy.sort() 函数返回输入数组的排序副本。函数格式如下:

numpy.sort(a, axis, kind, order)

参数说明:

  • a: 要排序的数组
  • axis: 沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序, axis=0 按列排序,axis=1 按行排序
  • kind: 默认为'quicksort'(快速排序)
  • order: 如果数组包含字段,则是要排序的字段

numpy.argsort()

numpy.argsort() 函数返回的是数组值从小到大的索引值。

numpy.lexsort()

numpy.lexsort() 用于对多个序列进行排序。把它想象成对电子表格进行排序,每一列代表一个序列,排序时优先照顾靠后的列。

这里举一个应用场景:小升初考试,重点班录取学生按照总成绩录取。在总成绩相同时,数学成绩高的优先录取,在总成绩和数学成绩都相同时,按照英语成绩录取…… 这里,总成绩排在电子表格的最后一列,数学成绩在倒数第二列,英语成绩在倒数第三列。

numpy.argmax() 和 numpy.argmin()

numpy.argmax() 和 numpy.argmin()函数分别沿给定轴返回最大和最小元素的索引。

numpy.nonzero()

numpy.nonzero() 函数返回输入数组中非零元素的索引。

numpy.where()

numpy.where() 函数返回输入数组中满足给定条件的元素的索引。

numpy.extract()

numpy.extract() 函数根据某个条件从数组中抽取元素,返回满条件的元素。

### ~tips:该篇只是简单的介绍Numpy库的安装及一些内置方法的使用,非常的基础。看不懂的地方多看几遍应该就很容易理解。另外有需要进阶的学习的people可以去Numpy教程官网(上文其实也是大同小异与其手册内容~~~只是其中叫基础的部分的提炼)学习学习。www.runoob.com     Numpy###

Python基础 Numpy菜鸟教程相关推荐

  1. 『Python开发实战菜鸟教程』工具篇:手把手教学使用VSCode开发Python

    文章目录: 0X01:引子 Python学习资料及开发工具介绍 0x02:实操 基于 Conda 的 Python 安装 VSCode 的安装使用 安装 插件管理按钮使用介绍 VSCode 如何管理项 ...

  2. python基础环境配置教程

    python基础环境配置教程 下载vscode 1.输入网址:https://code.visualstudio.com/ 2.下载windows版vscode并安装. 下载慢的话在自己的浏览器中找到 ...

  3. numpy菜鸟教程总结

    numpy菜鸟教程知识梳理 文章目录 NumPy Ndarray 对象 ndarray内部结构说明 numpy.array的参数 numpy数据类型 基本数据类型 数据类型对象(dtype) nump ...

  4. python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载

    每天一点点,记录学习 python 爬取菜鸟教程python100题 近期爬虫项目,看完请点赞哦: 1:python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载 2:pytho ...

  5. 『Python开发实战菜鸟教程』实战篇:爬虫快速入门——统计分析CSDN与博客园博客阅读数据

    文章目录 0x01:引子 首先介绍一下网络爬虫是什么,可以用来做什么? 这里简单探讨一下网络爬虫的合法性 正式进入爬虫实战前,需要我们了解下网页结构 HTML CSS JScript 写一个简单的 H ...

  6. 超完整 Python基础入门知识教程

    本书旨在帮助Python开发人员发现该语言和相关库的突出特性,并编写简单.流畅.易于阅读和易于维护的代码.特别是生成器.属性描述符(ORM的键)和Python表达式的对象在数据库处理过程中的具体应用: ...

  7. Python之Numpy详细教程

    NumPy - 简介 NumPy 是一个 Python 包. 它代表 "Numeric Python". 它是一个由多维数组对象和用于处理数组的例程集合组成的库. Numeric, ...

  8. python基础-------python2.7教程学习【廖雪峰版】(二)

    2017年6月7日14:59:27 任务:     看完python基础 1.计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以 ...

  9. 手机上的python编辑器_菜鸟教程在线编辑器|菜鸟教程app手机版下载(html/java/python3)v1.0-乐游网安卓下载...

    <菜鸟教程app手机版>是一款为想要学习编程的朋友们打造的在线学习和编辑的软件,菜鸟教程app中有着html.java.C++等众多不同的编程语言可以学习,软件还自带编辑功能,有着java ...

最新文章

  1. 《Altium Designer 14电路设计与仿真从入门到精通》——1.4 Altium电路板总体设计流程...
  2. scrapy 中爬取时被重定向_一篇文章教会你理解Scrapy网络爬虫框架的工作原理和数据采集过程...
  3. 关于SVG文件在Firefox中正确显示的研究
  4. JDK 14:记录,文本块等
  5. C++笔记:select多路复用机制
  6. python提取字符串中数字_EXCEL数字在字符串中间怎么提取?
  7. Aho-Corasick暂存第二篇
  8. LPC_2136 PLC,扩展方案,兼容西门子S7-200 CPU 224XP,兼容西门子软件
  9. 计算债券理论价格和久期,凸性_20200613_
  10. C语言虚词怎么在程序里表示,文言虚词用法推断
  11. 纯css绘制简易对话气泡
  12. python 获取网页的内容
  13. Ubuntu16 wine安装迅雷
  14. 累计三年,断断续续的管理经验
  15. 实数截断式保留两位小数
  16. 软件架构师 第一部分 基础篇 第四章 识别架构特性
  17. c语言 内部12位二进制整型数据 转换 十六进制 程序,C语言应用:将128位二进制数据转换为十六进制输出...
  18. 巨杉数据库荣获2021年度广州创新力大奖
  19. 前端基础(十一、JS 输出、变量、基本数据类型)
  20. 日语二级语法汇总(part5/16)

热门文章

  1. html控件、html服务器控件和web服务器控件的区别
  2. 5687. 执行乘法运算的最大分数
  3. 生产者消费者模型之lock版本(JAVA)
  4. 前端框架Aurelia - feature()
  5. 面试官:什么?HTTP不重要?你是古代穿越过来的吧!
  6. Chrome 插件安装
  7. 防汛四级应急响应启动,尾矿库如何安全度过汛期?
  8. 亚马逊云科技中国峰会:深度学习Amazon DeepRacer
  9. strcat与strncat
  10. 小长假理财:帮你赚回旅游费