python乘法表运算_Python入门教程(三):史上最全的Numpy计算函数总结,建议收藏!...

38b3a26e9530f099c730b3a69cbbada5.png

点击上方 蓝字 关注我们

782a2022d608c4388be8eedcf7ef9df1.png02a4ca0b05c5571542dcba800f0bf362.png

Numpy提供了灵活的、静态类型的、可编译的程序接口口来优化数组的计算,也被称作向量操作,因此在Python数据科学界Numpy显得尤为重要。Numpy的向量操作是通过通用函数实现的。今天小编会给大家较为全面地介绍下Numpy的通用函数。

01

数组的运算

Numpy通用函数涉及到Python原生的算术运算符,标准的加减乘除都可以使用,同时这些运算符也是Numpy内置函数的简单封装器,例如“+”就是add函数的封装器。下图汇总了Numpy实现的算术运算符。

73c95767a65873c95ecbbc30bd0c08c6.png

Numpy的加减乘除运算

x = np.arange(4)print("x     =", x)print("x + 5 =", x + 5)print("x - 5 =", x - 5)print("x * 2 =", x * 2)print("x / 2 =", x / 2)print("x // 2 =", x // 2)  # 向下整除# x     = [0 1 2 3]# x + 5 = [5 6 7 8]# x - 5 = [-5 -4 -3 -2]# x * 2 = [0 2 4 6]# x / 2 = [ 0.   0.5  1.   1.5]# x // 2 = [0 0 1 1]

求负数、**表示求指数运算符以及%表示求%运算符,请看下面示例:

print("-x     = ", -x)print("x ** 2 = ", x ** 2)print("x % 2  = ", x % 2)# -x     =  [ 0 -1 -2 -3]# x ** 2 =  [0 1 4 9]# x % 2  =  [0 1 0 1]

如果多个运算符组合使用时,需要考虑这些运算符的一个优先级。

-(0.5*x + 1) ** 2# array([-1.  , -2.25, -4.  , -6.25])

使用封装函数计算标准的加减乘除。

np.add(x, 2)# array([2, 3, 4, 5])

02

绝对值

Numpy通用的绝对值函数是np.absolute,也可以用其别名来访问np.abs。这个通用函数也可以处理复数,处理复数时,绝对值返回的是该复数的模。

x = np.array([-2, -1, 0, 1, 2])abs(x)# array([2, 1, 0, 1, 2])np.absolute(x)#  array([2, 1, 0, 1, 2])np.abs(x)#  array([2, 1, 0, 1, 2])x = np.array([3 - 4j, 4 - 3j, 2 + 0j, 0 + 1j])np.abs(x)# array([ 5.,  5.,  2.,  1.])

03

三角函数

三角函数是数据科学中常用到的函数,这里会讲解三角函数的计算以及逆三角函数的计算。

首先,我们需要先定义一个角度数组,然后通过cos(),sin(),tan()等三角函数进行计算。

theta = np.linspace(0, np.pi, 3)print("theta      = ", theta)print("sin(theta) = ", np.sin(theta))print("cos(theta) = ", np.cos(theta))print("tan(theta) = ", np.tan(theta))# theta      =  [ 0.          1.57079633  3.14159265]# sin(theta) =  [  0.00000000e+00   1.00000000e+00   1.22464680e-16]# cos(theta) =  [  1.00000000e+00   6.12323400e-17  -1.00000000e+00]# tan(theta) =  [  0.00000000e+00   1.63312394e+16  -1.22464680e-16]

同样我们也可以计算逆三角函数。

x = [-1, 0, 1]print("x         = ", x)print("arcsin(x) = ", np.arcsin(x))print("arccos(x) = ", np.arccos(x))print("arctan(x) = ", np.arctan(x))# x         =  [-1, 0, 1]# arcsin(x) =  [-1.57079633  0.          1.57079633]# arccos(x) =  [ 3.14159265  1.57079633  0.        ]# arctan(x) =  [-0.78539816  0.          0.78539816]

04

指数和对数

Numpy中的指数运算。

x = [1, 2, 3]print("x     =", x)print("e^x   =", np.exp(x))print("2^x   =", np.exp2(x))print("3^x   =", np.power(3, x))# x     = [1, 2, 3]# e^x   = [  2.71828183   7.3890561   20.08553692]# 2^x   = [ 2.  4.  8.]# 3^x   = [ 3  9 27

Numpy中的对数运算。

对数运算是指数运算的逆运算,最基础的np.log是以自然对数为底数的对数,同时也可以使用np.log2,np.log10等计算以2或10为底的对数。

x = [1, 2, 4, 10]print("x        =", x)print("ln(x)    =", np.log(x))print("log2(x)  =", np.log2(x))print("log10(x) =", np.log10(x))# x        = [1, 2, 4, 10]# ln(x)    = [ 0.          0.69314718  1.38629436  2.30258509]# log2(x)  = [ 0.          1.          2.          3.32192809]# log10(x) = [ 0.          0.30103     0.60205999  1.        ]

特殊情况下,对于非常小的输入值可以保持较好的精度。当x很小时,以下函数给出的值np.log和np.exp的计算更加精确。

x = [0, 0.001, 0.01, 0.1]print("exp(x) - 1 =", np.expm1(x))print("log(1 + x) =", np.log1p(x))# exp(x) - 1 = [ 0.          0.0010005   0.01005017  0.10517092]# log(1 + x) = [ 0.          0.0009995   0.00995033  0.09531018]

05

专用的通用函数

Numpy还提供了很多通用函数,包括了双曲三角函数,比特位运算,比较运算符,弧度转化为角度的运算,取整和求余运算。除此之外呢,Python中还有更加专用的通用函数模块scipy.special,下面会为大家展示一部分的代码片段。

 Gamma函数(广义阶乘,generlized factorials)和相关函数

from scipy import specialx = [1, 5, 10]print("gamma(x)     =", special.gamma(x))print("ln|gamma(x)| =", special.gammaln(x))print("beta(x, 2)   =", special.beta(x, 2))# gamma(x)     = [  1.00000000e+00   2.40000000e+01   3.62880000e+05]# ln|gamma(x)| = [  0.           3.17805383  12.80182748]# beta(x, 2)   = [ 0.5         0.03333333  0.00909091]

误差函数(高斯积分)

高斯积分的实现和逆实现

# Error function (integral of Gaussian)# its complement, and its inversex = np.array([0, 0.3, 0.7, 1.0])print("erf(x)  =", special.erf(x))print("erfc(x) =", special.erfc(x))print("erfinv(x) =", special.erfinv(x))# erf(x)  = [ 0.          0.32862676  0.67780119  0.84270079]# erfc(x) = [ 1.          0.67137324  0.32219881  0.15729921]# erfinv(x) = [ 0.          0.27246271  0.73286908         inf]

06

指定输出

所有的通用函数都可以通过out参数来指定计算结果的存放位置。

x = np.arange(5)y = np.empty(5)np.multiply(x, 10, out=y)print(y)# [  0.  10.  20.  30.  40.]
这个特性也可以被称为数组视图,例如将计算结果写入指定数组的每隔一个元素的位置。
y = np.zeros(10)np.power(2, x, out=y[::2])print(y)# [  1.   0.   2.   0.   4.   0.   8.   0.  16.   0.]

07

聚合

我们希望用一个特定的运算reduce一个数组,那么可以用任何通用函数的reduce方法。一个reduce方法会对给定元素和操作重复执行,直到得到这个结果。

对add通用函数调用reduce方法会返回数组中所有元素的和。

x = np.arange(1, 6)np.add.reduce(x)# 15

对multiply通用函数调用reduce方法会返回数组中所有元素的乘积。

np.multiply.reduce(x)# 120

accumulate函数可以储存每次计算的中间结果表。

np.add.accumulate(x)# array([ 1,  3,  6, 10, 15]
np.multiply.accumulate(x)array([  1,   2,   6,  24, 120])# array([  1,   2,   6,  24, 120])

任何通用函数都可以用outer方法获得两个不同输入数组所有元素对函数运算的结果。这意味着一行代码实现一个乘法表。

通用函数还能够操纵形状和大小不一样的数组,一组这样的操作被称为广播,后面会细讲。

x = np.arange(1, 6)np.multiply.outer(x, x)# array([[ 1,  2,  3,  4,  5],#        [ 2,  4,  6,  8, 10],#        [ 3,  6,  9, 12, 15],#        [ 4,  8, 12, 16, 20],#        [ 5, 10, 15, 20, 25]])

全部代码已上传,公众号后台回复【Numpy计算函数】即可获得。

8ff2884709e7e9a525f3e97bba276ad2.pnge711144600a6db074ea6486d72525551.png

python入门系列文章持续更新中,欢迎加入数据人专属交流群

52a5578f4660339853900c48c8d52b38.png

往期推荐

Python入门教程(一):初识Numpy

Python入门教程(二):Numpy数组基础

SQL知识大全(六):SQL中的开窗函数

刷爆全网的动态条形图,原来5行Python代码就能实现!

2b8480e8b5639d2b821ceafab79580d7.png 

分享数据知识,成就数据理想

点个在看 你最好看

8dc7f87e43e658c1072a8124c4cbd19c.png

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

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

相关文章

IoT -- (三) 2018 Top物联网项目排名

每年这个时候,知名物联网研究机构IoT Analytics都会基于市场上纷繁的信息来探索物联网项目的具体实施情况,今年也不例外。作为其追踪物联网生态的一个重要组成部分,IoT Analytics对1600个在企业中实际运行的物联网项目进行了整合、验证和分类…

4加密问题漏洞修复_Apache Shiro 反序列化漏洞实战

Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话管理。2016年,网络中曝光1.2.4以前的版本存在反序列化漏洞。尽管该漏洞已经曝光几年,但是在实战中仍然比较实用。花了点时间研究了下,并根据网络上的利用脚本改进。…

文件读取 linux_Linux 进程、线程、文件描述符的底层原理

说到进程,恐怕面试中最常见的问题就是线程和进程的关系了,那么先说一下答案:在 Linux 系统中,进程和线程几乎没有区别。Linux 中的进程其实就是一个数据结构,顺带可以理解文件描述符、重定向、管道命令的底层工作原理&…

中如何拉取git代码_git使用教程4pycharm拉取git仓库项目代码

前言当我们在github上看到别人写的项目,想拉到本地学习下。如何用pycharm把git仓库的代码拉取到本地电脑呢?环境准备:1.本地电脑已经安装了git2.已经注册过github账号3.pycharmpycharm配置先自己注册github账号,本地安装git环境&a…

lombok之@Slf4j注解

应用背景:如果不想每次都在实体类中写private final Logger logger LoggerFactory.getLogger(当前类名.class); 可以使用注解Slf4j Sl4j注解是是属于lombok中的一个注解,所以在使用该注解之前一定要引入lombok的依赖,同时IDEA还需要已经安装…

回归指令_用一条指令在新款 Mac 上找回经典的开机启动声

多年使用 Mac 的老用户肯定知道,Mac 在启动时会发出一声「噔~」的启动声音,伴随着 Apple logo 在屏幕上亮起,Mac 正在安全地启动。但如果你在最近几年换了新款 Mac 电脑,你会发现这个熟悉的启动音消失不见了。就像 Mag…

@DateTimeFormat注解

DateTimeFormat注解位于spring-context-5.0.10.RELEASE.jar包中 import org.springframework.format.annotation.DateTimeFormat; import java.util.Date;public class User {//姓名private String name;//出生日期DateTimeFormat(pattern "yyyy-MM-dd")private Da…

Gson之toJson和fromJson方法

Gson是Google的一个开源项目,可以将Java对象转换成JSON,也可能将JSON转换成Java对象。 Gson里最重要的对象有2个Gson 和 GsonBuilder Gson有2个最基本的方法 toJson() – 转换java 对象到JSONfromJson() – 转换JSON到java对象 引入依赖:…

Gson详解(二)

1.复杂Json转成对象 比如:jsonString:{“response”:{“content”:"\n\t",“msg”:“成功”,“code”:“0”,“data{“content”:”\n\t",“VIN”:“LDC12345678901234”},“cmd”:“ScanVINCode”}} Gson解析 Gson gson new Gson();roodBean gs…

Java使用GSON对JSON进行解析——IDEA引入jar包方式

GSON GSON是Google公司开发的用于解析json的类库。可以很轻松地让程序员将java对象转换成JSON格式,或者将JSON格式的对象转换成Java对象。 使用方法很简单: 首先,需要将GSON类库的jar包引入到自己的IDE中,本教程使用IDEA为例子…

mysql查询姓王的信息代码_MySQL查询语句练习题

1.创建student和score表CREATE TABLE student (id INT(10) NOT NULL UNIQUE PRIMARY KEY ,name VARCHAR(20) NOT NULL ,sex VARCHAR(4) ,birth YEAR,department VARCHAR(20) ,address VARCHAR(50));创建score表。SQL代码如下:CREATE TABLE score (i…

IoT -- (四) 物联网系统架构介绍

物联网系统框架介绍 下面将谈到几个关键问题: 设备如何接入网络?设备间如何通信?物联网数据的用途?如何搭建起一个物联网系统框架呢?它的技术架构又是怎么样呢?物联网终端软件系统架构?物联网云平台系统…

IoT -- (五) IoT都有哪些通信协议

IOT都有哪些通信协议? 在物联网协议中,我们一般分为两大类,一类是传输协议,一类是通信协议。那么,物联网都有哪些通信协议呢? 在物联网协议中,我们一般分为两大类,一类是传输协议&#xff0c…

IoT -- (六) MQTT和CoAP对比分析

IoT物联网需要标准协议,针对小设备最有前景的两种是MQTT和CoAP。 MQTT和CoAP两者均: 开放标准; 比HTTP更适合于受限环境; 提供异步传输机制; 在IP上运行; 有很多种实现 MQTT在传输模式上更为灵活&am…

IoT -- (八)MQTT优缺点

物联网并不仅仅是一种网络,而是一个新的生态环境,它描述的本质是越来越多的使用物品通过网络连接在一起并可使用单个或者多个的终端设备对它们进行各种控制和使用—当然,工业上的物联网通常连接到的石鼓传感器或者其他数据采集仪器以及行为单…

mysql 平滑扩容_数据库秒级平滑扩容架构方案

一、缘起(1)并发量大,流量大的互联网架构,一般来说,数据库上层都有一个服务层,服务层记录了“业务库名”与“数据库实例”的映射关系,通过数据库连接池向数据库路由sql语句以执行:如上图:服务层…

IoT -- (九) IoT通讯技术选型与模型设计

IoT时代的无线通讯技术 “世界上最遥远的距离就是没有网络”,网络通讯是IoT的基础,常见的无线网络通讯技术有:WiFi、NFC、ZigBee、Bluetooth、WWAN(Wireless Wide Area Network,包括GPRS、3G、4G、5G等)、…

SSM中PageHelper的使用步骤与com.github.pagehelper.PageHelper3系列与5系列的区别

SSM中PageHelper的使用步骤 一. 在pom.xml导入依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.2</version></dependency>二. 交给IOC管理 在SqlSessionFactory…

@requestbody和@requestparam作用

1、什么都不写 GET 可以自动封装为对象模型&#xff0c;没有的数值自动为0值 POST 请求体里面放了数据&#xff0c;但是还是使用了RequestParam里的数据 总结&#xff1a; 在不使用注解的情况下&#xff0c;相当于默认使用了RequestParam里的数据 &#xff08;这种理解是错…

@RequestBody的使用

提示&#xff1a;建议一定要看后面的RequestBody的核心逻辑源码以及六个重要结论本文前半部分的内容都是一些基 本知识常识&#xff0c;可选择性跳过。 声明&#xff1a;本文是基于SpringBoot&#xff0c;进行的演示说明。 基础知识介绍&#xff1a; ​ RequestBody主要用来接…