python中的numpy函数算相关系数_NumPy ufunc通用函数

NumPy 提供了两种基本的对象,即 ndarray 和 ufunc 对象。前面几节已经介绍了 ndarray,本节将介绍 Numpy。ufunc 是 universal function 的缩写,意思是“通用函数”,它是一种能对数组的每个元素进行操作的函数。

许多 ufunc 函数都是用C语言级别实现的,因此它们的计算速度非常快。

此外,ufun 比 math 模块中的函数更灵活。math 模块的输入一般是标量,但 NumPy 中的函数可以是向量或矩阵,而利用向量或矩阵可以避免使用循环语句,这点在机器学习、深度学习中非常重要。

表1:NumPy 中的几个常用通用函数

函数

使用方法

sqrt()

计算序列化数据的平方根

sin()、cos()

三角函数

abs()

计算序列化数据的绝对值

dot()

矩阵运算

log()、logl()、log2()

对数函数

exp()

指数函数

cumsum()、cumproduct()

累计求和、求积

sum()

对一个序列化数据进行求和

mean()

计算均值

median()

计算中位数

std()

计算标准差

var()

计算方差

corrcoef()

计算相关系数

math 与 numpy 函数的性能比较

请看下面的代码:

import time

import math

import numpy as np

x = [i * 0.001 for i in np.arange(1000000)]

start = time.clock()

for i, t in enumerate(x):

x[i] = math.sin(t)

print ("math.sin:", time.clock() - start )

x = [i * 0.001 for i in np.arange(1000000)]

x = np.array(x)

start = time.clock()

np.sin(x)

print ("numpy.sin:", time.clock() - start )

打印结果:

math.sin: 0.5169950000000005

numpy.sin: 0.05381199999999886

由此可见,numpy.sin 比 math.sin 快近 10 倍。

循环与向量运算比较

充分使用 Python 的 NumPy 库中的内建函数(Built-in Function),来实现计算的向量化,可大大地提高运行速度。NumPy 库中的内建函数使用了 SIMD 指令。如下使用的向量化要比使用循环计算速度快得多。如果使用 GPU,其性能将更强大,不过 Numpy 不支持 GPU。

请看下面的代码:

import time

import numpy as np

x1 = np.random.rand(1000000)

x2 = np.random.rand(1000000)

##使用循环计算向量点积

tic = time.process_time()

dot = 0

for i in range(len(x1)):

dot+= x1[i]*x2[i]

toc = time.process_time()

print ("dot = " + str(dot) + "\n for loop----- Computation time = " + str(1000*(toc - tic)) + "ms")

##使用numpy函数求点积

tic = time.process_time()

dot = 0

dot = np.dot(x1,x2)

toc = time.process_time()

print ("dot = " + str(dot) + "\n verctor version---- Computation time = " + str(1000*(toc - tic)) + "ms")

输出结果:

dot = 250215.601995

for loop----- Computation time = 798.3389819999998ms

dot = 250215.601995

verctor version---- Computation time = 1.885051999999554ms

从运行结果上来看,使用 for 循环的运行时间大约是向量运算的 400 倍。因此,在深度学习算法中,一般都使用向量化矩阵进行运算。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 8.x 以前的版本修改密码规则

查看密码相关变量: mysql> show variables like validate_password%; ---------------------------------------------- | Variable_name | Value | ---------------------------------------------- | validate_password_dictionary_f…

aws mfa 认证_如何为您的AWS账户设置多因素身份验证(MFA)

aws mfa 认证第1步 : 转到AWS控制台并使用您的用户名密码登录。 第2步 : 转到服务-> IAM 第三步: 单击您的根帐户上的激活MFA 第4步 : 在步骤3中,点击屏幕上的管理MFA按钮。 步骤5: 单击分配…

python具体工作内容_有没有人知道公司里用python工作的内容有什么

2018-07-11 回答python的特色 简单 python是一种代表简单主义思想的语言。阅读一个良好的python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。 …

如何导入hadoop源码到eclipse

需要进一步学习hadoop、需要看看内部源码实现,因此需要将hadoop源码导入都eclipse中。 简单总结一下,具体步骤如下: 首先确保已经安装了git、maven3、protobuf2.5、如果没有安装需要提前安装一下 0、preliminary linux distribution(我的…

线程池的学习

文章目录线程池原理JDK 1.5 之后提供的线程池工厂类线程池的使用步骤线程池原理 1.创建多个线程对象,存放到集合中,集合可以是 ArrayList 或者 LinkedList 2.从集合中取出一个线程对象,执行指定的任务 3.一个线程对象只能执行一个任务&#…

javafx 界面_JavaFX的科幻用户界面第1部分

javafx 界面使用JavaFX创建的Sci-Fi UI成形窗口 虚构的UI可以变成现实吗? 成长于80年代的小时候,我看到了自己的科幻电影,这确实激发了我对图形用户界面(GUI)的热爱,尤其是试图使科幻UI在现实世界中成为可…

token验证_如何利用 C# 爬取带 Token 验证的网站数据?

在对文本数据的情感分析中,基于情感词典的方法是最简单也是最常用的一种了。它的大体思路如下:对文档分词,找出文档中的情感词、否定词以及程度副词,然后判断每个情感词之前是否有否定词及程度副词,将它之前的否定词和…

hadoop2.6.0+eclipse配置

【0】安装前的声明 0.1) 所用节点2个 master : 192.168.119.105 hadoop5 slave : 192.168.119.101 hadoop1 (先用一个slave,跑成功后,在从master分别scp到各个slaves即可】) 0.2) 每个机子的那些个文件…

线程同步的学习

文章目录一、同步代码块二、同步方法静态同步方法三、Lock解决线程安全问题的三种方案:同步代码块、同步方法、使用 Lock一、同步代码块 synchronized(同步锁对象) { 需要同步操作的代码 }注: 1.锁对象可以是任意对象 2.必须保证多个线程使用同一个锁对…

spock测试_用于混合Spock 1.x和JUnit 5测试的Maven项目设置

spock测试我为Maven创建了一个示例Groovy项目,该项目在一个项目中混合了Spock测试和JUnit 5测试。 在下一节中,我将描述如何设置这种Maven项目。 在项目中启用Groovy 首先,您必须在项目中启用Groovy。 一种可能性是将GMavenPlus插件添加到您…

python 图片识别_python识别图片文字

滑稽研究所python识别图片文字哈喽,大家好呀,我是滑稽君。大家在写论文时可能经常碰到无法复制文字的文章。明明找到了需要的内容却无法直接复制使用,这让我们十分苦恼。那么本期滑稽君就告诉大家如何使用python识别图片中的文字。滑稽君整理…

MySQL数据库的数据类型decimal详解

大概意思是这样的: decimal(m,d) m是数字的最大位数,他的范围是从1-65; d是小数点后的位数,他的范围是0-30,并且不能大于m。 如果m被省略了,那么m的值默认为10, 如果d被省略了,那么d…

如何撰写论文

【0】README 0.1)本内容转自一个学长的口述,该学长在硕士期间发表论文6篇,现在 某高校读博; 0.2)鉴于看的人比较多,于今日对文本进行排版便于各位阅读(timestamp: 1512141116)&…

java查找链表中间元素_如何通过Java单次查找链表的中间元素

java查找链表中间元素您如何一次找到LinkedList的中间元素是一个编程问题,在电话采访中经常问Java和非Java程序员。 这个问题类似于检查回文或 计算阶乘 ,有时Interviewer还会要求编写代码。 为了回答这个问题,候选人必须熟悉LinkedList的数…

python nums函数获取结果记录集有多少行记录_PHP mysqli_num_rows():获取查询结果的行数...

在 PHP 中,想要获取由 SELECT 语句查询到的结果集中有多少条数据的话,则需要使用 mysqli_num_rows() 函数来实现。首先我们来看一下该函数的语法结构:面向对象风格的写法$mysqli_result -> num_rows;其中 $mysqli_result 为使用 mysqli_qu…

Windows系统下,好用的录屏软件工具/屏幕录制工具

文章目录万兴神剪手Open Broadcaster Software(OBS)QQ录屏Window 10 自带的屏幕录制软件录屏王bandicam万兴神剪手 可以录制网络视频、视频教程、游戏指南、演示文稿等。除了一些需要调用显卡的游戏,游戏窗口画面都能录制。神剪手的后期剪辑…

What are definitions of ​Model, Inference and Algorithm and its associations ?

【1】拿初中的二元一次方程来说明: 1.1)说model就好比一元二次方程,它是个方程模型;1.2)再说inference是求解该方程的某种方法——加减消元法(重在推理);1.3)最后说algo…

aws ec2 选择可用区_AWS Messaging Services:选择合适的服务

aws ec2 选择可用区1. AWS消息服务 AWS Messaging服务使云中相似和不同的软件系统能够异步通信和交换信息。 这些软件系统可能不兼容且使用不同的语言,也可能在不同的平台上。 AWS消息传递服务具有高度可用性,高度可扩展性和高度可靠性。 AWS支持针对不同…

qq消息连发代码_我们用的QQ是怎样实现通讯的

聊天工具便利了我们的生活,我们经常使用的QQ怎样实现通讯的呢?首先我们需要知道网络里的两种协议,两种通讯协议分别为UDP和TCP通常网络之间的通讯都是由这两个协议支持的,这两种协议属于传输层,它可以传输文件。UDP&am…

产品经理十大悲催错误

文章目录错误1: 将用户需求混淆为产品需求错误2: 将老板的需求混淆为产品需求错误3:将发明(invention)混淆为创造(innovation)错误4: 以自己的需求取代用户的需求错误5: …