码迷,mamicode.com
首页 > 其他好文 > 详细

Numpy

时间:2019-03-07 14:14:32      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:pac   模拟   split   2.3   初始   copy   ceil   正整数   ace   

1. 简介

版本1.15.4

NumPy是一个Python科学计算的基础包,包含了多维数组对象(multidemensional array object)和诸如矩阵等多种衍生对象,然后基于此进行数学计算、逻辑计算、维度改变、排序、筛选、输入输出、离散傅里叶变换、基础线性代数、基础统计操作、随机模拟等等一系列操作。

NumPy和Python内置序列的区别
  • NumPy中的数组在创建的时候长度是固定的,修改长度会新建数组、删除原有数组;
  • NumPy数组中的元素必须属于同一类型,对象数组除外;
  • NumPy数组帮助实现大量数据的高级数学计算和其他类型操作,并且执行的效率比Python内置序列要更高;
  • 越来越多的Python包都开始基于NumPy并且处理数据时都直接返回NumPy数组,所以掌握NumPy是非常有必要的

2. ndarray

NumPy的核心数据结构是一个包含同类型数据的多维数组ndarray,因为维度可能较高,所以常常使用一个包含正整数的元组进行索引,NumPy中维度又称“轴”(axis,复数是axes)

属性 解释
ndarray.ndim 返回ndarray的轴数
ndarray.shape 以元组的形式返回ndarray的维度
ndarray.size 返回ndarraty中元素的总数,相当于ndarray.shape中各个数字的乘积
ndarray.dtype 返回ndarray中元素的类型,常见的有numpy.int32, numpy.float32, numpy.float64
ndarray.itemsize 返回ndarray中元素所占的字节数
ndarray.data 不建议使用

2.1 创建

(1)直接将Python的列表或者元组(二者嵌套也可以)转换为多维数组;(适用于中小型数据的人工构建)

(2)使用NumPy初始化函数,通过占位符内容来初始化ndarray。(偏向大型数据的自动构建)

(3)从磁盘、标准格式、自定义格式中读取ndarray

(4)从字符串或缓存中创建

(5)使用特殊的库函数,比如random

函数 解释
zeros(shape)/zeros_like() 构建全0数组
ones(shape)/ones_like() 构建全1数组
empty(shape)/empty_like() 构建随机数组
arange(a, b, c) 类似Python中range()的构建方法,a,b,c分别代表起始值、终止值、步长/方向
linspace(a, b, c) 同上,只不过c不代表步长,而代表在a与b之间生成数字的个数
random.random(shape) 创建指定维度的随机数组,元素为0到1之间
random.rand() (**待补充**)
random.randn() (**待补充**)
fromfunction() (**待补充**)
fromfile() (**待补充**)

2.2 元素级运算

函数 解释
max(axis)/min(axis) 统计最值
sum(axis) 求和
np.exp(ndarray) 计算自然指数
np.sqrt(ndarray) 计算平方根
np.add(ndarray1, ndarray2) 元素级数组相加,相当于ndarray1+ndarray2
np.floor(ndarray) 计算小于的最大整数
np.ceil(ndarray) 计算大于的最小整数

2.3 更改维度

函数名 解释
ndarray.ravel() 将多维数组压成一个一维数组,并返回
ndarray.reshape(shape) 将ndarray调整为指定的维度并返回,reshape([3, 4])或者reshape(3, 4)都可以,如果是reshape(3, -1)则表示最后一个轴自动计算
ndarray.resize(shape) 原地方法,和reshape稍有不同
ndarray.T 矩阵的转置
ndarray[:, newaxis] 加一个轴,需要导入from numpy import newaxis

2.4 连接

函数名 解释
np.vstack((ndarray1, ndarray2)) 竖直堆积,对于二维数组等价于row_stack()
np.hstack((ndarray1, ndarray2)) 水平堆积,对于二维数组等价于column_stack()
np.c() 沿着第二个轴将切片对象连接在一起
np.r() 沿着第一个轴将切片对象连接在一起

2.5 分割

函数名 解释
hsplit(ndarray, 3) 将ndarray水平分割为三个大小相同的多维数组
hsplit(ndarray, (3, 4)) 将ndarray水平分割为三个子数组,切割位置为第三列、第四列
vsplit() 依次类推

2.6 复制与视图

复制分为深复制和浅复制两种,由于NumPy中的==运算符会产生布尔数组,所以常用is来区分二者。

NumPy中的深浅复制和其余语言不同,为了统一,在这里稍作修改:深复制得到的变量的值发生变化会引起原变量的值的变化,而浅复制则相反。

(1)赋值操作不是复制

执行了a = b那么a is b一定成立

(2)view()和base

ndarray的切片其实就是创建一个视图,而视图其实生成了一个新的数组对象,只不过在产生的过程中视图窗口中的数据保持不变,需要注意的是修改视图中的数据等价于修改原数据(修改视图的维度和数据类型除外)。

(3)copy()实现浅复制

copy()函数得到的是一个独立的数组对象副本,对此副本的所有操作,都将和原来数组无关。

Numpy

标签:pac   模拟   split   2.3   初始   copy   ceil   正整数   ace   

原文地址:https://www.cnblogs.com/flyangovoyang/p/10489076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!