numpy教程:函数库和ufunc函数_皮皮blog-CSDN博客

numpy函数库:对数组进行处理

ufunc函数: ufunc是universal function的缩写,它是一种能对数组的每个元素进行操作的函数。NumPy内置的许多ufunc函数都是在C语言级别实现的,因此它们的计算速度非常快。

numpy函数和方法(method)总览

创建数组

arange, array, copy, empty, empty_like, eye, fromfile, fromfunction, identity, linspace, logspace, mgrid, ogrid, ones, ones_like, r , zeros, zeros_like

转化

astype, atleast 1d, atleast 2d, atleast 3d, mat

操作

array split, column stack, concatenate, diagonal, dsplit, dstack, hsplit, hstack, item, newaxis, ravel, repeat, reshape, resize, squeeze, swapaxes, take, transpose, vsplit, vstack
询问

all, any, nonzero, where
排序

argmax, argmin, argsort, max, min, ptp, searchsorted, sort

运算

choose, compress, cumprod, cumsum, inner, fill, imag, prod, put, putmask, real, sum
基本统计

cov, mean, std, var
基本线性代数

cross, dot, outer, svd, vdot

arange函数

python自带的range函数只能得到整数类型的序列(注意当需要小数序列时用该函数会报错)

如果想得到小数数列的话可以用numpy中的arange函数。

arange(0,1,0.1)  
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])

Vectorize函数

对numpy数组中的每一个元素应用一个函数

a = np.array([[[1, 2], [1]],
              [[2, 3, 3], [3, 4]]
              ])
print(a.shape)
count_fun = np.vectorize(lambda x: len(x))
print(count_fun(a))

def t(x):
  return x + 3
a1 = scipy.zeros((2,4))
a1
          [[0 0 0 0]
          [0 0 0 0]]
s = scipy.vectorize(t)
a2 = s(a1)
a2
         [[3 3 3 3]
          [3 3 3 3]]

numpy.array_equal(a1,a2)函数

True if two arrays have the same shape and elements, False otherwise.

[numpy.array_equal]

皮皮blog

ufunc函数对象的方法

ufunc函数对象本身还有一些方法,这些方法只对两个输入、一个输出的ufunc函数有效,其它的ufunc对象调用这些方法时会抛出ValueError异常。

reduce()方法

和Python的reduce()函数类似,它沿着axis参数指定的轴对数组进行操作,相当于将<op>运算符插入到沿axis轴的所有元素之间。

<op>.reduce (array, axis=0, dtype=None)

例如:

>>> np.add.reduce([1,2,3]) # 1 + 2 + 3
6
>>> np.add.reduce([[1,2,3],[4,5,6]], axis=1) # (1+2+3),(4+5+6)

array([ 6, 15])

计算numpy数组array中所有元素乘积

np.multiply.reduce(array)

如:print(np.multiply.reduce([5,2,3]))

30

accumulate()

和reduce()类似,只是它返回的数组和输入数组的形状相同,保存所有的中间计算结果:

>>> np.add.accumulate([1,2,3])
array([1, 3, 6])
>>> np.add.accumulate([[1,2,3],[4,5,6]], axis=1)
array([[ 1,  3,  6],[ 4,  9, 15]])

reduceat()

计算多组reduce()的结果,通过indices参数指定一系列的起始和终了位置。它的计算有些特别,让我们通过例子详细解释一下:

>>> a = np.array([1,2,3,4])
>>> result = np.add.reduceat(a,indices=[0,1,0,2,0,3,0])
>>> result
array([ 1,  2,  3,  3,  6,  4, 10])

对于indices参数中的每个元素都会计算出一个值,因此最终的计算结果和indices参数的长度相同。结果数组result中除最后一个元素之外,都按照如下计算得出:

if indices[i] < indices[i+1]:result[i] = <op>.reduce(a[indices[i]:indices[i+1]])
else:result[i] = a[indices[i]]

而最后一个元素如下计算:

<op>.reduce(a[indices[-1]:])

因此上面例子中,数组result的每个元素按照如下计算得出:

1 : a[0] -> 1
2 : a[1] -> 2
3 : a[0] + a[1] -> 1 + 2
3 : a[2] -> 3
6 : a[0] + a[1] + a[2] ->  1 + 2 + 3 = 6
4 : a[3] -> 4
10: a[0] + a[1] + a[2] + a[4] -> 1 + 2 + 3 + 4 = 10

可以看出result[::2]和a相等,而result[1::2]和np.add.accumulate(a)相等。使用reduceat()可以对数组中的多个片段同时进行reduce运算。

outer()方法

对其两个参数数组的每两对元素的组合进行运算。若数组a的维数为M,数组b的维数为N,则ufunc函数op的outer()方法对a、b数组计算所生成的数组c的维数为M+N。c的形状是a、b的形状的结合。例如a的形状为(2,3),b的形状为(4,5),则c的形状为(2,3,4,5)。让我们看一个例子:

>>> np.multiply.outer([1,2,3,4,5],[2,3,4])
array([[ 2,  3,  4],[ 4,  6,  8],[ 6,  9, 12],[ 8, 12, 16],[10, 15, 20]])

可以看出通过outer()计算的结果是如下的乘法表:

*| 2  3  4
------------
1| 2  3  4
2| 4  6  8
3| 6  9 12
4| 8 12 16
5|10 15 20

如果将这两个数组按照等同程序一步一步地进行计算,就会发现乘法表最终是通过广播的方式计算出来的。

皮皮blog

多项式函数

多项式函数是变量的整数次幂与系数的乘积之和,可以用下面的数学公式表示:
     f(x)= anxn+an-1xn-1 +…+a2x2+a1x +a0

表示和转换

f(x) = x3 -2x + 1可以用下面 的数组表示,其中a[0]是最高次的系数,a[-1]是常数项,注意x2的系数为0。
>>>a= np.array([1.0, 0, -2, 1])
用poly1d()将系数转换为poly1d(一元多项式)对象,此对象可以像函数一样调用,它 返回多项式函数的值:
>>> p = np.poly1d(a)
>>>type(p)
< numpy.lib.polynomial.poly1d>
>>> p(np.linspace(0,1, 5))
array([ 1., 8.515625, 0.125, -0.078125, 0. ])

多项式计算

对poly1d对象进行加减乘除运算相当于对相应的多项式函数进行计算。例如:
>>> p + [-2, 1] # 和 p + np.polyld([-2, 1])相同 poly1d([ 1., 0., -4., 2.])
>>> p*p #两个3次多项式相乘得到一个6次多项式
 polyld([ 1., 0., -4., 2., 4., -4.,1.])
>>> p / [1, 1] #除法返回两个多項式,分别为商式和余式 (poly1d([ 1., -1., -1.]), poly1d([ 2.]))
>>> p==np.poly1d([ 1., -1., -1.]) * [1,1] + 2 
>>> True

多项式微分和积分

多项式对象的deriv()和integ()方法分别计算多项式函数的微分和积分:
>>> p.deriv()
poly1d([ 3., 0., -2.])
>>> p.integ()
poly1d([ 0.25, 0., -1., 1. , 0.])
>>> p.integ().deriv() == p 
True

多项式函数的根

使用roots()函数计算
>>> r = np.roots(p)
>>> r
array([-1.61803399, 1., 0.61803399])
>>> p(r)  #将根带入多项式计算,得到的值近似为0
array([ -4.21884749e-15, -4.44089210e-16,-2.22044605e-16])
poly()函数可以将根转换冋多项式的系数
>>> np.poly(r)
array([ 1. 00000000e+00, 9.99200722e-16, -2. 000000000e+00 , 1.00000000e+00])

NumPy多项式函数

除了使用多项式对象之外,还可以直接使用NumPy提供的多项式函数对表示多项式系数的数组进行运算。
 >>> np.polymul([1,1],[1,1])
array( [1,2,1])

polyfit()函数

对一组数据使用多项式函数进行拟合,找到和这组数据最接近的 多项式的系数。
计算-pi/2~ pi/2区间与sin(x)函数最接近的多项式的系数:(numpy_polyfit.py)
x = np.linspace(-np.pi/2, np.pi/2, 1000) 
y = np.sin(x) 
for deg in [3,5,7]:
      a = np.polyfit(x, y, deg)
      error = np.abs(np.polyval(a, x)-y)
      print “poly %d:” %deg, a
      print “max error of order %d:” % deg , np.max(error)

from:numpy教程:函数库和ufunc函数_皮皮blog-CSDN博客

ref: NumPy Reference

用Python做科学计算-ufunc运算

http://www.cnblogs.com/begtostudy/archive/2010/08/03/1790935.html

numpy教程:函数库和ufunc函数相关推荐

  1. 【Android 内存优化】libjpeg-turbo 函数库交叉编译 ( libjpeg-turbo 函数库下载 | libjpeg-turbo 编译文档 | 环境准备 | NASM 安装 )

    文章目录 一. libjpeg-turbo 函数库下载与解压 二. libjpeg-turbo 编译文档 三. 编译前环境准备 四. 安装 NASM 汇编工具 1. 下载 NASM 汇编工具 2. 拷 ...

  2. php常用系统函数库,PHP常用函数大全

    php usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_ ...

  3. curses函数库_Shell Curses函数库

    Shell Curses成立于1993年,旨在解决需要一组可移植的游标操纵函数的特定问题,而不必为每个新平台都重新编译它们. 这些功能最初是用Bourne Shell编写的,此后已迁移到Korn Sh ...

  4. linux shell 函数库,bash shell 函数库

    bash shell 函数库ash由自由软件基金会,Inc.版权所有(C) 1989-2011. 语法 bash [options] [file] 描述 Bash是一种与sh兼容的命令语言解释器,它执 ...

  5. discuz核心函数库function_core的函数注释

    /*** 系统错误处理* @param <type> $message 错误信息* @param <type> $show 是否显示信息* @param <type> ...

  6. mysql动态函数库_mysql自定义函数与动态查询

    介绍下mysql自定义函数的例子,以及插入单引号的方法,动态执行查询与字符串拼接的相关内容. 1.mysql自定义函数的例子 mysql不能像oracle 一样写 动态SQL. 代码示例: DROP ...

  7. matlab函数库-optimset,OptimsetOptimget 函数用法

    利用optimset函数,可以创建和编辑参数结构:利用optimget函数,可以获得options优化参数. ●optimget函数 功能:获得options优化参数. 语法: val = optim ...

  8. c语言常用函数库 c++常用函数库

    <cstring> strlen() 字符串长度 strcmp() 字符串比较 strcpy() 字符串复制 memset() 暴力清空 memcpy() 暴力拷贝 <cmath&g ...

  9. c语言stdlib函数库,C语言函数库——stdlib.h

    1.abs 功能:求绝对值 2.atof 功 能: 把字符串转换成浮点数 例子: #include #include int main() { float f; char *str = "1 ...

  10. c语言标准函数库怎么建立教程,C语言入门教程-创建一个函数库

    描述 创建一个函数库 上述程序中的rand和bubble_sort函数很实用,很可能在您写其他程序时也能派上用场.为了能更方便地重复使用,您可以为它们创建一个实用工具函数库. 所有的函数库都包括两部分 ...

最新文章

  1. 阅读论文《一种金融市场预测的深度学习模型FEPA》(1)
  2. php过滤敏感词实例代码
  3. Java IO: PipedInputStream
  4. CodeIgniter中URL含有中文字符串的解决方案
  5. win定时关机_如何让电脑定时自动关机
  6. 兼容性所有浏览器的透明CSS设置
  7. Grails 基础环境搭建及HelloWorld
  8. 记录一次面试中的HTTP请求相关问题
  9. 公交车管理系统C语言
  10. steam显示不能连接网络连接服务器,steam请检查网络连接
  11. python图像清晰度计算_Python 做图片清晰度识别
  12. mac下报 504 Gateway Time-out
  13. MATLAB中怎么表示对数函数及e
  14. java constants_Java Constants类代码示例
  15. 如何制作 Sketch 插件
  16. html中微信添加好友超链接,微信给文字加链接代码分享(原来微信超链接是这样加的)...
  17. 【计算理论】下推自动机 PDA ( 上下文无关语言 CFL 的 泵引理 | 泵引理反证示例 | 自动机扩展 )
  18. unturned服务器参数修改,《Unturned》3.X.X控制台指令教程
  19. win10局域网中只能发现部分计算机,Windows10系统局域网中共享计算机找不到怎么办...
  20. 《go语言实战》阅读笔记01

热门文章

  1. java学习 hibernate 持久态和瞬时态
  2. aspx反射调用方法
  3. html常用表单元素(组件)
  4. Plants vs. Zombies(二分好题+思维)
  5. Spring Security三种认证
  6. Regular Expression(正则表达式)之邮箱验证
  7. Javascript 笔记与总结(2-1)Javascript 与 DOM
  8. 只修改日期不修改时间(巧用convert函数)
  9. Graham-Scan小总结——toj2317 Wall
  10. 知识图谱构建-关系抽取和属性抽取