Numpy使用4
来源:互联网 发布:电子邀请函制作软件 编辑:程序博客网 时间:2024/06/15 16:52
上篇博客写到了numpy的索引与切片,这篇博客介绍numpy的一些数学统计上的使用和如何结合numpy实现对结构化文本的处理
通用函数
所谓的通用函数(ufunc)就是指元素级别的数组函数,你可以将其看做简单函数其接受一个或者多个标量值,产生一个或者多个标量值。
In [87]: arrOut[87]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])In [88]: np.sqnp.sqrt np.square np.squeeze In [88]: np.sqrt(arr)Out[88]: array([ 0. , 1. , 1.41421356, 1.73205081, 2. , 2.23606798, 2.44948974, 2.64575131, 2.82842712, 3. ])In [92]: y = np.random.randn(10)In [93]: x = np.random.randn(10)In [94]: xOut[94]: array([-1.21694813, 1.78409159, -1.65434122, -0.15399479, 1.60253837, 0.74424786, -0.67561382, -0.40101547, 0.98082673, -2.02494822])In [95]: yOut[95]: array([-0.00402273, -0.06694182, -2.65686769, -0.39958789, -0.77770152, 0.13560955, 0.80155845, -0.65633865, -0.10009588, 2.00409772])In [96]: np.maxinp.maximum np.maximum_sctype In [96]: np.maximum(x,y)Out[96]: array([-0.00402273, 1.78409159, -1.65434122, -0.15399479, 1.60253837, 0.74424786, 0.80155845, -0.40101547, 0.98082673, 2.00409772])
类似与上面的函数还有很多,下表列出部分:
利用numpy进行数据处理
利用numpy强大的数组(矩阵)能力,可以将很多的数据处理的问题转化为对数组的处理问题
比如对一个数组将其中大于0的值置为2,小于0的置为-2,这个怎么做???
python的一般做法是遍历,但是这存在性能问题,我们看看numpy是怎么做的
利用numpy.where()可以简单的做到,where()函数是if condition x else y的矢量化版本,我们可以这么做:
In [97]: arr = np.random.randn(4,4)In [98]: arrOut[98]: array([[-1.91177362, 0.82087817, 0.74335108, 1.80535455], [-1.04152013, -1.55160244, 0.58826121, 0.0138859 ], [ 0.86341095, 2.0301454 , 0.75151171, -0.38441971], [-0.95949818, 0.39064892, 0.17747275, -0.00499914]])In [99]: np.where(arr>0, 2, -2) ## 矢量化版本的if conditionOut[99]: array([[-2, 2, 2, 2], [-2, -2, 2, 2], [ 2, 2, 2, -2], [-2, 2, 2, -2]])
(1)数学与统计
In [101]: arr = np.random.randn(4,4)In [102]: arrOut[102]: array([[ 1.22742206, -0.49602643, 0.06893939, -0.5974265 ], [ 1.33043955, -0.24695017, 1.39751381, -0.23691971], [-1.25554674, 0.37242292, -0.14985591, -0.11907288], [ 0.06103707, -1.28255389, -0.67935123, -1.35710905]])In [103]: arr.mean()Out[103]: -0.1226898557091208In [104]: arr.mean(axis=0)Out[104]: array([ 0.34083799, -0.41327689, 0.15931151, -0.57763203])In [105]: arr.mean(axis=1)Out[105]: array([ 0.05072713, 0.56102087, -0.28801315, -0.81449428])In [106]: arr.sum()Out[106]: -1.9630376913459329In [107]: arr.sum(axis=0)Out[107]: array([ 1.36335194, -1.65310755, 0.63724605, -2.31052813])
类似的方法还有很多,下图列出部分:
(2)数组的集合运算
看下例:
In [108]: values = np.array([2,3,1,6,7,4])In [109]: values1 = np.array([2,6,8])In [110]: np.in1d(values, values1) ## 判断values的元素是否在values1中Out[110]: array([ True, False, False, True, False, False], dtype=bool)
(3)文件的输入输出
主要是那个函数np.load()和np.save(),前者负责读取文件,后者负责写文件
In [112]: test_write = np.arange(10)In [113]: np.save('test',test_write) ## 会在当前目录下创建名叫"test.npy"的二进制文件In [114]: load_test = np.load('test.npy') ## 读入文件In [115]: load_testOut[115]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
还可以使用np.loadtxt(),通过制定分隔符(delimiter)来读取结构化的文本文件,这个我在博客Numpy使用1中介绍过,就不在多说了,需要的可以去看看
其它的特性还有些想关于线性代数方面的,这个大家自行百度。
其实存取结构化的数据(类似于表结构)numpy并不是很好的选择,之后我会写个介绍pandas的博客,这个对各种表结构的处理比numpy强大太多,numpy的强大之处在于其n-dim array的能力。
0 0
- Numpy使用4
- Numpy 使用教程 4
- 【CS231N】Numpy 使用入门 (4)
- numpy使用
- NumPy使用
- numpy 使用
- numpy使用
- Numpy(4)
- python numpy使用
- numpy where 的使用
- python numpy使用
- Numpy Python 使用感想
- python之Numpy使用
- NumPy使用(一)
- NumPy使用(二)
- python numpy使用
- Numpy:使用Matplotlib绘图
- Numpy使用1
- hadoop eclipse集成开发
- 实现从“环信”下载聊天记录,显示在本地项目页面的功能(三)—— 将解析后的数据保存到本地DB中
- stdin与STDIN_FILENO区别与联系
- SQL语句基本用法
- iOS ------------点集中的最小圆--------------
- Numpy使用4
- 删除mysql 安装 mysql 5.1.65 5.1.73
- iOS面试题一
- C++实验1-复习
- The import android.support cannot be resolved(Eclipse的v4包问题)
- Android三种常用动画分享(1)--帧动画
- 泛型算法01
- Android studio中自定义属性访问不了的解决办法
- Android深入浅出系列之Socket—Socket编程(一)