这里对Numpy库常用的函数进行总结。详细的函数内容可以查阅。Numpy是科学计算库,是一个强大的N维数组对象ndarray,是广播功能函数。其整合C/C++.fortran代码的工具 ,更是Scipy、Pandas等的基础

————————————————

注意,基本所有语句都可以使用两种写法,如下面的例子

# dot()函数可以通过numpy库调用,也可以由数组实例对象进行调用
a.dot(b) 与 numpy.dot(a,b)   #a,b是数组(矩阵)b=a.reshape(shape) 与 b=np.reshape(a,shape)
b=a.resize(shape) 与 b=np.resize(a,shape)
#如b=a.reshape((3,2)) 与 b=np.reshape(a,(3,2))

另外,习惯上, 数组元素编号、行列编号都是从0开始的。如一维数组有n个元素,元素编号为0到n-1;如三维数组有3层4行5列,(0,1,3)表示第1层第2行第4列的元素。

三维数组维度顺序为(层数、行、列),代号表示为0,1,2, 即z,y,x,即深度、高度、宽度。

-数组信息查询

.ndim :维度。说白了就是[]括号的层数
.shape :各维度的尺度,注意(x,y)表x行y列,(x,1)表x行1列,(y,)表1行y列。不知道为什么1行时这么特殊,不把1写出来。看下面截图例子
.size :元素的个数。与元素位于第几层[]无关,表所有独立的元素的总数
.dtype :元素的类型 dtype(‘int32’)
.itemsize :每个元素的大小,以字节为单位 ,每个元素占4个字节

.shape 表各维度的尺度,注意(x,y)表x行y列,(x,1)表x行1列,(y,)表1行y列。

-ndarray数组的创建

np.arange(m,n) ; 1行n-m列数组,元素从m到n-1
np.arange(n)或np.arange(n,); 1行n列数组,元素从0到n-1.即不输入m,则默认m=0np.ones((m,n)): m行n列数组,元素全为1
np.ones((n))或np.ones((n,))
np.ones(n)或np.ones(n,): 1行n列数组,元素全为1.即不输入m则默认m=1np.zeros((m,n),dtype = np.int32): 生成int32型的全0,dtype参数可加可不加,上面几个语句也是一样
np.zeros((n,))或np.zeros(n,)或np.zeros((n))或np.zeros(n) 默认m=1,1行n列数组
注意np.zeros(m,n)会报错,np.zeros(shape)参数shape必须是坐标形式(x,y),带括号np.full(shape, val): 参数shape是坐标形式(x,y),元素全为val.若不输入x则默认x=1np.eye(n) : 生成单位矩阵,默认m=n
np.eye(m,n) : 生成类似单位矩阵,多余的行或列全为0.参见下面截图np.ones_like(a) : 按数组a的形状生成全1的数组
np.zeros_like(a): 同理
np.full_like (a, val) : 同理np.linspace(m,n,x) : 闭区间[m,n]内,等间距生成1行x列数组,包含m和n
np.linspace(m,n,x, endpoint = False) : 半开区间[m,n)内,等间距生成1行x列数组,包含m,不含n
注意endpoint=False表示n不含在内,实际上是m到n,取x+1个点中间夹x段,只取前x个点.
注意没有endpoint=Ture。只有False参数np.concatenate((a1, a2, ...), axis) :将若干数组沿行方向或列方向连接起来
a1, a2, ...是相同类型的数组,axis连接数组所沿的轴,默认为 0。axis=0表列方向,axis=1表行方向

-数组的维度变换

.reshape(shape) : 不改变数组元素,根据shape重新组织行列。如1行4列reshape为2行2列、4行1列。3行2列等不合理的,会报错注意,三维数组维度顺序为0,1,2,即z,y,x,即深度、高度、宽度,即层数、行、列a = np.arange(24).reshape((3,4,2)),表3层4行2列
.resize(shape) : 改变当前数组,依shape生成。resize功能>=reshape如1行4列resize为2行2列、4行1列,则实际等同于reshape。resize为3行2列,多出来的位置则会用已有的元素(按照顺序)填充。见截图
.swapaxes(ax1,ax2) : 将两个维度调换。若数组有n维,则ax1,ax2可取0,1,2...n-1.高维情况换轴还是很抽象的。见截图
.flatten() : 对数组进行降维,保留全部元素降成1维数组。元素顺序,排完原数组第一行,开始第二行,类推

-数组的类型变换

数据类型的转换 :a.astype(new_type) : eg, a.astype (np.float), a.astype(float)也是对的
数组向列表的转换: a.tolist() 注意[]层数不会改变,例如三维数组变成列表后,[]依然保留,只不过没有数组行列形式了

-数组的索引和切片

一维数组索引
a = np.array([9, 8, 7, 6, 5, ])   一维数组有n个元素,元素编号为0到n-1
a[0]=9, a[1]=8一维数组切片
a = np.array([9, 8, 7, 6, 5, ])
a[1:4:2] = array([8, 6]) : a[起始编号:终止编号(不含): 步长]
a[::2] = array([9, 7, 5])   缺省时,表示从第0个元素开始,到最后一个元素
a[::1] = array([9, 8, 7, 6, 5])- 多维数组索引
a = np.arange(24).reshape((2, 3, 4))
a[1, 2, 3] 表示3个维度上的编号,即第2层第3行第4列的元素。编号从0开始- 多维数组切片
a [:,:,::2 ] 缺省时,表从第0个元素开始,到最后一个元素.注意比较一维数组切片的关联。这里列切片2个冒号

-数组的运算

np.abs(a) 和 np.fabs(a) : 取各元素的绝对值 .fabs()取绝对值并使成为float类型
np.sqrt(a) : 计算各元素的平方根
np.square(a): 计算各元素的平方
np.log(a) np.log10(a) np.log2(a) : 计算各元素的自然对数、10、2为底的对数
np.ceil(a) np.floor(a) : 计算各元素的ceiling 值, floor值(ceiling向上取整,floor向下取整)
np.rint(a) : 各元素 四舍五入。对于负数元素,先取其绝对值进行四舍五入,然后再加负号。如-1.5变成-2,-1.4变成-1例如np.rint(np.array([-1.5,1.5,-4.4]))=array([-2.,2.,-4.])
np.modf(a) : 将数组各元素的小数和整数部分以两个独立数组形式返回
np.exp(a) : 计算各元素的指数值
np.sign(a) : 计算各元素的符号值 1(+),0,-1(-)
np.maximum(a, b) np.fmax() :a,b数组具有相同的形式,一一比较相应位置处的元素取大者. fmax()取最大值并使成为float类
np.minimum(a, b) np.fmin() : 同上,取最小值。a,b形式不同,则会报错如例,a=[1,2,-1],b=[0,3,-2],则np.maximum(a, b)=[1,3,-1],np.minimum(a, b)=[0,2,-2]
np.mod(a, b) : 元素级的模运算
np.copysign(a, b) : 将b中各元素的符号赋值给数组a的对应元素

- NumPy IO 数据存取于文件。

主要是np.savetxt()和np.loadtxt()、numpy.save()和numpy.load()、numpy.savez()和numpy.load()、array.tofile()和np.fromfile()

np.savetxt(FILENAME, array, fmt="%d", delimiter=",")
np.loadtxt(FILENAME, dtype=int, delimiter=' ')
savetxt(),只能存储一维和二维数组.存储三维及以上则会报错。
savetxt() 函数将数据以文本形式存储到txt文件中
fmt表示元素的格式如 %d, %.2f, %.18e
delimiter指定各种分隔符、针对特定列的转换器函数、需要跳过的行数等。默认是空格
实例1:
a = np.array([1,2,3,4,5])
np.savetxt('out.txt',a)
b = np.loadtxt('out.txt')
实例2:
a=np.arange(0,10,0.5).reshape(4,-1)
np.savetxt("out.txt",a,fmt="%d",delimiter=",") # 改为保存为整数,以逗号分隔
b = np.loadtxt("out.txt",delimiter=",") # load 时也要指定为逗号分隔numpy.save(file, arr, allow_pickle=True, fix_imports=True)
numpy.load('outfile.npy')
numpy.save() 函数一次保存一个数组到.npy文件中
file是要保存的文件,扩展名为 .npy,如果文件路径末尾没有扩展名 .npy,该扩展名会被自动加上。
allow_pickle: 可选,布尔值,允许使用 Python pickles 保存对象数组,Python 中的 pickle 用于在保存到磁盘文件或从磁盘文件读取之前,对对象进行序列化和反序列化。
fix_imports: 可选,为了方便 Pyhton2 中读取 Python3 保存的数据
实例:
a = np.array([1,2,3,4,5])
# 保存到 outfile.npy 文件上
np.save('outfile.npy',a)
# 保存到 outfile2.npy 文件上,如果文件路径末尾没有扩展名 .npy,该扩展名会被自动加上
np.save('outfile2',a)
b = np.load('outfile.npy') numpy.savez(file, *args, **kwds)
numpy.load("runoob.npz")
numpy.savez() 函数一次可以保存多个数组到.npz文件中
file:要保存的文件,扩展名为 .npz,如果文件路径末尾没有扩展名 .npz,该扩展名会被自动加上。
args: 要保存的数组,可以使用关键字参数为数组起一个名字,非关键字参数传递的数组会自动起名为 arr_0, arr_1, …
kwds: 要保存的数组使用关键字名称
实例:
a = np.array([[1,2,3],[4,5,6]])
b = np.arange(0, 1.0, 0.1)
c = np.sin(b)
# c 使用了关键字参数 sin_array
np.savez("runoob.npz", a, b, sin_array = c)
r = np.load("runoob.npz")
print(r.files) # 查看各个数组名称
print(r["arr_0"]) # 数组 a
print(r["arr_1"]) # 数组 b
print(r["sin_array"]) # 数组 ca.tofile(frame, sep=’’, format=’%s’ )  ##注意没有numpy.tofile(),这个写法报错
np.fromfile(frame, dtype = float, count=-1, sep=’’)
用于多维数据的存取,a.tofile() 和np.fromfile()要配合使用,要知道数据的类型和维度。
frame:文件、字符串;dtype:读取的数据以此类型存储;
count:读入元素个数,-1表示读入整个文件; sep: 数据分割字符串,如果是空串,写入文件为二进制
format:: 写入数据的格式
实例:
a = np.arange(100).reshape(5, 10, 2)
a.tofile(“b.dat”, sep=”,”, format='%d')
np.fromfile(“b.dat”)

- numpy随机数函数

numpy 的random子库,注意numpy.random子库和独立的random库不是同一个库。二者有差别,numpy.random子库主要产生随机数作为多维数组的元素,而random独立库单纯产生随机数,因此二者尽管有很多同名的随机数产生方式,但numpy.random一般会多一个shape数组维度参数

np.random.*
np.random.rand(d0, d1, …,dn)       d0到dn指定各维度结构,如rand(3,4,5)表3层4行5列三维数组。各元素是[0, 1)的浮点数,服从均匀分布
np.random.randn(d0, d1, …,dn)      d0到dn含义同上。元素服从标准正态分布
np.random.randint()
randint(low,high,shape): 依shape创建随机整数或整数数组,范围是[low, high).如randint(1,10,(2,3,4))
seed(s) :随机数种子,s是给定种子值。给定随机数组种子后,随后使用randrandnrandint产生的随机数组不变。见截图shuffle(a) : 根据数组a的第一轴进行随机排列,改变数组a。随意调换两轴,作用结果就是改变了的数组a
permutation(a) : 根据数组a的第一轴进行随机排列, 随意调换两轴,但是不改变原数组a,将生成新数组
choice(a[, size, replace, p]) : 从一维数组a中以概率p抽取元素, 形成size形状新数组,replace表示是否可以重用元素,缺省值为True。
实例:
b=np.random.randint(100,200,(8,))
np.random.choice(b,(3,2))  #会有重复的元素
np.random.choice(b,(3,2),replace=False)   #没有重复的元素
np.random.choice(b,(3,2),p=b/np.sum(b))   #p是出现几率,与数字大小成正比np.random.uniform(low,high,shape)  ##在上下限间,产生均匀分布的数组
np.random.normal(avr,scale,shape)  ##avr均值,scale标准差,产生正太分布的数组
np.random.poisson(lam,shape)       ##lam随机事件发生率,产生具有泊松分布的数组。这个lam是什么意思?只要是非负数就行

- numpy的统计函数

sum(a, axis = None) : 依给定轴axis计算数组a相关元素之和,axis为整数或者元组
mean(a, axis = None) : 同理,计算平均值
average(a, axis =None, weights=None) : 依给定轴axis计算数组a相关元素的加权平均值
std(a, axis = None) :同理,计算标准差
var(a, axis = None): 计算方差
#注意,以上axis参数可选0,1,2表示分别在相应方向上操作。如果不填,则表示对数组中全部元素操作
实例:
np.mean(a, axis =1) : 对数组a的行维度的数据进行求平均(注意,是固定第几列,求第1、2、3...行的平均)
a = np.arange(12).reshape(2,3,2)
np.average(a, axis=1, weights =[10, 5, 1]) : 对a数组 行维度加权求平均,weights为权重系数,分别对应求第1、2、3行min(a) max(a) : 计算数组a的最小元素值和最大元素值
ptp(a) : 计算数组a最大值和最小值的差
median(a) : 计算数组a中元素的中位数(中值)
argmin(a) argmax(a) : 计算数组a的最小、最大值的下标(注意:返回值是假想将多维数组解折叠为一维数组时的下标)
unravel_index(index, a.shape) : 输入a.shape和一维下标index,找到相应元素的实际多维下标(不需要假想为一维)
实例:
a = [[15, 14, 13],
[12, 11, 10] ]
np.argmax(a) = 0  #最大值为假想的一维数组中的第一个元素
np.unravel_index( np.argmax(a), a.shape) = (0,0)  #最大值在实际数组的坐标为第1行第1列

np.average(a, axis=1, weights =[10, 5, 1])和np.mean(a, axis =1)

- numpy的梯度函数

np.gradient(a) : 计算数组a中元素的梯度,f为多维时,返回每个维度的梯度
离散梯度计算: 三个数a, b, c 其中a的梯度是(b-a)/1, b的梯度是(c-a)/2,而c的梯度是(c-b)/1当为二维数组时,np.gradient(a) 得出两个数组.
第一个数组由依次两行的相应元素相减得到,如第2行减第1行,第3行减第2行...
第二个数组由依次两列的相应元素相减得到,如第2列减第1列,第3列减第2列...
多维数组时类似

- 图像的表示和变换

图像实际是一个二维数组,numpy结合python PIL(python image library)库常使用与图像处理

from PIL import Image
# Image是PIL库中代表一个图像的类(对象)im = np.array(Image.open(“.jpg”))im = Image.fromarray(b.astype(‘uint8’)) # 生成
im.save(“路径.jpg”) # 保存im = np.array(Image.open(“.jpg”).convert('L'))
# convert(‘L’)表示转为灰度图

————————————————

-数组的运算

numpy.dot()函数用于数组相乘

基本用法和matlab类似
使用dot()函数的写法,有两种:dot()函数可以通过numpy库调用,也可以由数组实例对象进行调用
a.dot(b) 与 numpy.dot(a,b)   #a,b是数组(矩阵)dot()返回的是两个数组的点积(dot product)
1. 若a和b是一维数组,则得到的是两数组的內积(inner product)
2. 若a和b是二维数组(矩阵)之间的运算,则得到的是矩阵积(mastrix product)
实例见截图此外,矩阵积计算不遵循交换律, np.dot(a,b) 和 np.dot(b,a) 得到的结果是不一样的。

astype函数_Python库收录——数值计算numpy库常用函数(含注释)相关推荐

  1. python中re模块的函数_python中的re模块,常用函数介绍

    参考: http://www.cnblogs.com/tina-python/p/5508402.htm ======== 1,预定义字符集,可以写在字符集[....]中 \d  数字: \D 非数字 ...

  2. python 函数作用于矩阵_图解NumPy:常用函数的内在机制

    原标题:图解NumPy:常用函数的内在机制 来源: 机器之心 支持大量多维数组和矩阵运算的 NumPy 软件库是许多机器学习开发者和研究者的必备工具,本文将通过直观易懂的图示解析常用的 NumPy 功 ...

  3. R语言广义线性模型函数GLM、广义线性模型(Generalized linear models)、GLM函数的语法形式、glm模型常用函数、常用连接函数、逻辑回归、泊松回归、系数解读、过散度分析

    R语言广义线性模型函数GLM.广义线性模型(Generalized linear models).GLM函数的语法形式.glm模型常用函数.常用连接函数.逻辑回归.泊松回归.系数解读.过散度分析 目录

  4. python构建一个计算列表中位数的函数_python学习之数据科学库

    numpy创建数组 #导入numppy库, 对numpy重命名为np. import numpy as np #1). 创建数组: a, b, c创建的数组相同, 任选一种; #方法一: 直接将数组/ ...

  5. python numpy库安装-Python Numpy库安装与基本操作示例

    本文实例讲述了Python Numpy库安装与基本操作.分享给大家供大家参考,具体如下: 概述 NumPy(Numeric Python)扩展包提供了数组功能,以及对数据进行快速处理的函数. NumP ...

  6. python np dot函数_python科学计算之Numpy

    Numpy的组成与功能 Numpy(Numeric Python)可以被理解为一个用python实现的科学计算包,包括: 1.强大的N维数组对象Array: 2.成熟的函数库: 3.实用的线性代数.傅 ...

  7. C++ algorithm库中的几个常用函数(swap,reverse,sort)

    C++中的algorithm库中有几个常用的模板函数,写算法题时经常用到,以下将其归纳总结一下(swap,reverse,sort): swap() template <class T> ...

  8. python下载numpy库_安装numpy库

    1.先安装pip: 下载地址:http://pypi.python.org/pypi/pip#downloads 下载pip-8.1.2.tar.gz(md5,pgp)完成之后,解压到一个文件夹,cm ...

  9. 图解NumPy:常用函数的内在机制

    选自Medium 作者:Lev Maximov 机器之心编译 编辑:Panda 支持大量多维数组和矩阵运算的 NumPy 软件库是许多机器学习开发者和研究者的必备工具,本文将通过直观易懂的图示解析常用 ...

最新文章

  1. 小程序在wxml使用indexOf
  2. python tkinter 布局_python tkinter学习——布局
  3. 禁止Html5在手机上屏幕页面缩放
  4. 乾颐堂安德网工认证1000问(持续更新)
  5. quarkus_使用Quarkus调试容器中的系统测试(视频)
  6. 前端:JS/23/JS内置对象(String对象,Array对象,Date对象,Boolean对象,Number对象,Math对象),实例:求圆的面积,求直角三角形
  7. 【转】WCF、Net remoting、Web service概念及区别
  8. gflags的使用(转载)
  9. Python3.x:pyodbc调用sybase的存储过程
  10. gif生成工具(免费)
  11. 火龙果卡密生成获取get!{火龙果邀请码指定卡密}
  12. 有序回归: Ordinal Regression的理解
  13. 阿里云盾SSL证书即将到期怎么办?
  14. 华为手机录音m4a格式怎么转换为MP3格式
  15. 草根精神改变历史,山寨模式创造未来
  16. matlab dim是什么意思,哪位大神给我解释下这两句程序是什么意思
  17. 田纳西大学计算机科学,田纳西大学
  18. H5页面唤起手机拨打电话(拨号)
  19. STM32F103点亮LED灯
  20. python是世界上最好的语言表情包_语言表情包 - 语言微信表情包 - 语言QQ表情包 - 发表情 fabiaoqing.com...

热门文章

  1. iphone最新款手机_苹果用户不换安卓手机的8点原因,最后一点最关键
  2. 机器学习中基本线性代数
  3. opencv之namedWindow,imshow出现两个窗口
  4. Django实现省市县级联菜单
  5. docker, docker-compose安装
  6. 从零开始的全栈工程师——html篇1.6
  7. vue项目中如何引入ElementUI
  8. 广搜 广搜 poj 3984
  9. Leetcode 142 Linked List Cycle II
  10. [转载]Tomcat 6.0 安装配置