博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据分析(3):ufunc
阅读量:5272 次
发布时间:2019-06-14

本文共 1905 字,大约阅读时间需要 6 分钟。

universal function 可以对数组里的每一个元素进行操作,底层是C语言实现的,在对数组运算时表现卓越

1.1 初步上手

x = np.linspace(0,2*np.pi,10)y = np.sin(x); yOut[3]: array([  0.00000000e+00,   6.42787610e-01,   9.84807753e-01,         8.66025404e-01,   3.42020143e-01,  -3.42020143e-01,        -8.66025404e-01,  -9.84807753e-01,  -6.42787610e-01,        -2.44929360e-16])t = np.sin(x,x) # 函数的第二个参数用来存放输出的tOut[5]: array([  0.00000000e+00,   6.42787610e-01,   9.84807753e-01,         8.66025404e-01,   3.42020143e-01,  -3.42020143e-01,        -8.66025404e-01,  -9.84807753e-01,  -6.42787610e-01,        -2.44929360e-16])xOut[6]: array([  0.00000000e+00,   6.42787610e-01,   9.84807753e-01,         8.66025404e-01,   3.42020143e-01,  -3.42020143e-01,        -8.66025404e-01,  -9.84807753e-01,  -6.42787610e-01,        -2.44929360e-16])id(t) == id(x) # 用id函数对比一下Out[7]: True

1.2 小插曲 xrange

xrange()得到的是一个迭代器,可以通过enumerate(x)进行迭代,而range()获得的是一个列表

1.3 运行速度

math提供的函数对单个的运算速度很快,但对数组整体的运算效率一般,ufunc设计时是针对数组批量运算设计的,对数组整体运算速度很快,但单个运算一般

所以不推荐import *,这样可以math.sin也可以np.sin

y = x1 + x2: add(x1, x2 [, y])
y = x1 - x2: subtract(x1, x2 [, y])
y = x1 * x2: multiply (x1, x2 [, y])
y = x1 / x2: divide (x1, x2 [, y]), 如果两个数组的元素为整数,那么用整数除法
y = x1 / x2: true divide (x1, x2 [, y]), 总是返回精确的商
y = x1 // x2: floor divide (x1, x2 [, y]), 总是对返回值取整
y = -x: negative(x [,y])
y = x1**x2: power(x1, x2 [, y])
y = x1 % x2: remainder(x1, x2 [, y]), mod(x1, x2, [, y])

1.4 广播

教程上称之为广播,感觉有些别扭,称之为自动对齐好了

a = np.arange(0,60,10).reshape(-1,1);aOut[25]: array([[ 0],       [10],       [20],       [30],       [40],       [50]])b = np.arange(0,5)b.shapeOut[27]: (5,)c = a+b;cOut[28]: array([[ 0,  1,  2,  3,  4],       [10, 11, 12, 13, 14],       [20, 21, 22, 23, 24],       [30, 31, 32, 33, 34],       [40, 41, 42, 43, 44],       [50, 51, 52, 53, 54]])

1.5 小插曲repeat

b = b.repeat(6, axis = 0) 0表示纵向,1表示横向

1.6 numpy.ogrid

这个应该在画三维图时会用到,先不急

 

转载于:https://www.cnblogs.com/ajmd/p/6081985.html

你可能感兴趣的文章
他看了几千份技术简历,愿意把技术简历的秘籍传授给你
查看>>
Struts2学习(三)
查看>>
使用电子邮件模板
查看>>
Callable和Runnable和FutureTask
查看>>
GitHub 多人协作开发 三种方式:
查看>>
文本域添加编辑器
查看>>
Yum安装MySQL以及相关目录路径和修改目录
查看>>
java获取hostIp和hostName
查看>>
RxJava结合Retrofit和Volley简单比较
查看>>
iOS 企业版 安装失败 原因
查看>>
ThreadLocal 理解
查看>>
关于web服务器和数据库的各种说法(搜集到的)
查看>>
一个 forceLayout() 和 requestLayout() 的测试
查看>>
【转】使用js触发事件
查看>>
《TCP/IP 详解 卷一》读书笔记 -----第四章 ARP
查看>>
C# Stream 和 byte[] 之间的转换
查看>>
自定义不等高的cell-(storyboard)
查看>>
Cracking the code interview
查看>>
linux命令 rpm
查看>>
OMG: daily scrum nine
查看>>