易学智能

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3641|回复: 8

[python] Python学习(接力赛11)Python3三方库之numpy

[复制链接]

44

主题

139

帖子

382

积分

论坛管理

Rank: 4

积分
382
发表于 2018-9-27 15:54:48 | 显示全部楼层 |阅读模式
本帖最后由 2919005896 于 2018-9-27 16:14 编辑

Python三方库之numpy

numpy库的安装:
window下命令行直接输入pip install numpy
导入numpy库:import numpy 或者 import numpy as np
numpy与list:
相同之处:
都可以用下标访问元素,如a[3].
都可以切片访问,如a[1:3]
都可以使用for循环进行遍历
不同之处
numpy之中的每个元素类型必须相同,而list可以混合多个类型元素
numpy使用更方便,封装了许多函数,例如:mean,std,sum,min等
numpy可以是多维数组。numpy用c实现,操作起来速度更快

numpy数据类型:
图1.png

1 ndarray对象
  numPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型。它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。ndarray类的实例可以通过本教程后面描述的不同的数组创建例程来构造。基本的ndarray是使用 numPy 中的数组函数创建的
  我们可以通过给array函数传递Python的序列对象创建数组,如果传递的是多层嵌套的序列,将创建的多维数组。numpy.array(object,dtype = None, copy = True, order = None, subok = False, ndmin = 0)
参数描述:
图1.1.png
例子如下:
图1.21.png
图1.22.png

1.1数组属性
numpy.shape数组的大小可以通过属性shape获得。在保持数组元素个数不变的情况下可以改变数组每个轴的长度。 图1.31.png
图1.32.png
当某个轴的元素为-1时,将根据数组元素的个数自动计算此轴的长度。使用数组的reshape方法,可以创建一个改变了尺寸的新数组,原数组的shape将保持不变。(注意:这两个数组其实共享存储区域,因此修改任意一个数组元素的内容都会修改另外一个数组的内容)。
图1.41.png
图1.42.png
numpy.dtype 数组元素类型可以通过dtype属获得,可以通过dtype参数在创建的时候指定元素类型。  
图1.51.png
图1.52.png
numpy.itemsize返回数组中每个元素的字节单位长度
图1.61.png
运行结果为:4
2 数组创建
numpy.empty创建指定形状和dtype未初始化的数组,使用以下构造函数:numpy.empty(shape,dtype = float, order = 'C') :参数列表如下:
图2.1.png
例子如下:
图2.21.png
图2.22.png
注意:数组元素为随机值,因为他们未初始化。numpy.zeros返回特定大小,以0填充的新数组:numpy.zeros(shape,dtype = float, order = 'C')例子如下:
图2.31.png
图2.32.png
numpy.ones返回特定大小,以1填充的新数组:
图2.41.png
图2.42.png

3用已有数据创建数组
numpy.asarray类似于numpy.array。基本用法和array类似。与array的区别如下:
图3.11.png
图3.12.png
由图可见:对于元数据:二者没有区别,都是对元数据复制并转换为ndarray。

图3.21.png
图3.22.png
由图可见:当数据源是ndarry时,array会copy出一个副本,占用新的内存,但是asarry不会。
numpy.frombuffer
此函数将缓冲区解释为一维数组。暴露缓冲区接口的任何对象都用作参数来返回ndarray
numpy.frombuffer(buffer,dtype = float, count = -1, offset = 0)
图3.3.png
numpy.fromiter
此函数从任何可迭代对象构建一个ndarray对象,返回一个新的一维数组。
图3.41.png
图3.42.png

4来自数值范围的数组
numpy.arangenumpy.arange(start,stop, step, dtype)类似于python中的range函数,通过起始值,终值和步长来创建一维数组(数组不包括终值)
图4.11.png
图4.12.png
numpy.linspace
同过指定初始值,终值,和元素个数来创建一维数组,通过endpoint关键字指定是否包含终值,缺省设置是包含终值。numpy.linspace(start,stop, num, endpoint, retstep, dtype)
图4.2.png
图4.31.png
图4.32.png
numpy.logspace
此函数返回一个ndarray对象,其中包含在对数刻度上均匀分布的数字,刻度的开始和结束端点都是某个底数的幂。通常为10num.logspace(start,stop,num,endpoint,base,dtype)
图4.4.png
图4.51.png

图4.52.png

5切片和索引
ndarray对象中的元素遵循基于零的索引。 有三种可用的索引方法类型: 字段访问,基本切片和高级索引
字段访问:
图5.11.png
图5.12.png
和python列表序列不同,通过下标范围获取的新的数组是原始数组的一个视图,他与原始数组共享一块数据空间。如:
图5.21.png
图5.22.png
切片索引:
切片索引通过将start、stop、和step参数提供给内置的slice函数来构建一个Python slice对象,此slice对象被传递给数组提取来提取数组的一部分。
图5.31.png 图5.32.png
除了用下标索引和切片索引外,numpy还提供了两中高级索引方法

使用整数序列索引
当使用整数序列对数组元素进行存取时,将使用序列中的每个元素作为下标,整数序列可以是列表或者数组,使用整数序列作为下标活得的数组不和原始数组共享数据空间。
图5.41.png
图5.42.png

使用布尔数组
当使用布尔数组b作为下表存取数组x中的元素时,将收集数组x中所有在数组b中对应下标为True的元素。使用布尔数组作为下标获得的数组不和原始数组共享数据空间,这种方式对应于布尔数组,不对应于列表。
图5.51.png
图5.52.png
下图输出大于5的数字
图5.61.png
图5.62.png

广播
广播是指在numpy在算术运算期间处理不同形状的数组的能力,对数组的运算通常是在元素上进行,如果两个阵列具有完全相同的形状,则这些操作将被无缝执行。
图5.71.png
图5.72.png
  如果两个数组的维数不相同,则元素到元素的操作是不可能的。 然而,在 NumPy 中仍然可以对形状不相似的数组进行操作,因为它拥有广播功能。较小的数组会广播到较大数组的大小,以便使它们的形状可兼容
  ndim较小的数组会在前面追加一个长度为 1 的维度。
  输出数组的每个维度的大小是输入数组该维度大小的最大值。
  如果输入在每个维度中的大小与输出大小匹配,或其值正好为 1
  如果输入的某个维度大小为1,则该维度中的第一个数据元素将用于该维度所有计算。
图5.81.png
图5.82.png

6数组上的迭代
numpy包含一个迭代器对象numpy.nditer,它是一个有效的多维迭代器对象,可以用于在数组上的迭代,数组的每个元素可以使用Python的标准接口访问
图6.11.png
图6.12.png
迭代的顺序匹配数组的内容布局,而不是考虑特定的排序。
图6.21.png
图6.22.png

广播迭代

如果两个数组是可广播的,nditer组合能够同时迭代他们。实例如下:
图6.31.png
图6.32.png

翻转操作
图6.4.png
numpy.transpose

格式如下:
numpy.transpose(arr, axes)

arr:表示要转置的矩阵,axes:整数的列表,对应维度,通常所有的维度都会翻转
图6.51.png
图6.52.png
numpy.adarry.T(效果与transpose类似)
numpy.rollaxis
  该函数向后滚动特定的轴,直到一个特定的位置,这个函数接受3个参数。numpy.rollaxis(arr, axis, start)
arr:输入数组
axis:要向后滚动的轴,其他轴的相对位置不变

start:默认为0,表示完整的滚动,会滚到特定的位置
图6.61.png
图6.62.png

7数组连接
图7.1.png

numpy concatenate此函数用于指定轴连接相同形状的两个或多个数组

numpy.concatenate((a1, a2, ...),axis)

a1,a2…相同类型的数组
图7.21.png
图7.22.png

numpy.stack此函数沿新轴连接数组numpy.stack(arrays, axis)
arrays:相同形状的数组序列
axis:返回数组中的轴,输入数组沿着它来堆叠
axis:沿着它连接的数组的轴,默认为0
图7.31.png
图7.32.png
算数函数三角函数

numpy拥有标准的三角函数,它为弧度制单位的给定角度返回三角函数比例
图7.41.png
图7.42.png
arcsin 和 arccos和arctan函数返回给定角度的sin,cos和tan的反三角函数,这些结果可以通过numpy.degree()函数来将弧度制转换为角度制。(以下以arcsin为例)
图7.5.png
8统计函数
numpy.amin 和numpy.amax
这些函数表示从给定数组中的元素,沿指定轴返回最小值和最大值
图8.1.png
图8.2.png

回复

使用道具 举报

9

主题

47

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2018-10-8 09:01:11 | 显示全部楼层
这个论坛上也有很多写numpy的帖子。都还可以挺不错的。
回复

使用道具 举报

11

主题

63

帖子

159

积分

注册会员

Rank: 2

积分
159
发表于 2018-10-8 15:55:08 | 显示全部楼层
好帖,学习了
回复

使用道具 举报

9

主题

47

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2018-10-9 08:40:02 | 显示全部楼层
这一个numpy老哥讲的还是挺详细的
回复

使用道具 举报

5

主题

41

帖子

108

积分

注册会员

Rank: 2

积分
108
发表于 2018-10-9 09:53:28 | 显示全部楼层
不错的帖子
回复

使用道具 举报

1

主题

27

帖子

71

积分

注册会员

Rank: 2

积分
71
发表于 2018-10-10 08:34:12 | 显示全部楼层
很详细啊
回复

使用道具 举报

2

主题

54

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2018-10-10 08:40:38 | 显示全部楼层
这个还是很详细的
回复

使用道具 举报

4

主题

34

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2018-10-10 08:51:03 | 显示全部楼层
stamina 发表于 2018-10-10 08:40
这个还是很详细的

嗯嗯感觉楼主用心整理了
回复

使用道具 举报

7

主题

28

帖子

79

积分

注册会员

Rank: 2

积分
79
发表于 2018-10-10 08:53:32 | 显示全部楼层
谢谢楼主棒棒的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|易学智能

GMT+8, 2024-4-25 13:13 , Processed in 0.021911 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表