python中math库的常用方法_Python中的库,python,library

Reference: Working with External Libraries

Click me!

本节将讨论python中库的导入以及介绍部分常用的库和它们所返回的对象。

1. 导入(imports)

我们之前有学过数据类型、自定义内置函数等,但python中最美好的事情大概是它所自带的库了吧;

有一些库称为“标准库”,可以轻松调用;但有一些库必须使用

”imports“

导入;

我们来看一个例子:

import math # 导入math

print("It's math! It has type {}".format(type(math)))

输出:

It's math! It has type

解析:

math

是一个模块。模块是指所有变量的集合。

我们可以用dir()函数去查看math模块中所存在的所有变量:

>>> import math # 每次使用math前,都别忘了导入哦

>>> dir(math)

现在知道了每个模块中都含有很多变量,那么怎么调用呢?

那就是

模块名称 . 变量名

;如调用pi的值:math.pi;

>>> import math

>>> "pi to 4 significant digits = {:.4}".format(math.pi)

"pi to 4 significant digits = 3.142"

除了pi,经常用到的还有math.log(),使用格式:math.log(底数, 对数):

>>> import math

>>> math.log(8,2)

3.0

2. 其他import语法

1、有时候,可能某个模块经常需要被用到,但是有些模块名称特别长,特别难记;这时候可以给模块起个容易记的名字,

调用格式为 import 模块名称 as 自定义名称

,as 相当于给模块重命名:

>>> import math as mt # ‘mt'是自定义名称

>>> example.pi

3.141592653589793

虽然是可以重命名,但是在python中还是有一些常用的简称的,例如:

import numpy as np

import pandas as pd

2、那能不能直接把模块名字省去,也就是直接引用pi即可?答案是可以!

>>> from math import *

>>> pi

3.141592653589793

“import * ”

可以允许你直接调用模块里的变量。

但是,不能同时调用两个 ”import * “,这样会报错;

>>> from math import *

>>> from numpy import *

>>> log(8,2)

TypeError: return arrays must be of ArrayType

为啥会这样呢?

因为math和numpy库里都包含了log这个函数,但是却不同的意思;而且numpy是第二次导入的,因此numpy的log函数的结果会覆盖掉math的结果;

最好的妥协就是用啥写啥,建议不要使用 * ,因为可能会导致报错;

from math import log,pi

from numpy import asarray

3. 子模块(Submodules)

之前讲过,模块中含有很多可以引用的变量,但模块还可以引用其他模块的变量;

看个例子:

>>> import numpy

>>> "numpyrandom is a", type(numpy.random)

('numpyrandom is a', )

从上述例子可知,numpy是一个模块,而random就是numpy的子模块了;我们来看看具体是怎么用的吧:

>>> rolls = numpy.random.randint(low = 1, high = 6, size = 3) #含有3个参数,数值范围为1-6,长度为3;

array([5, 5, 1])

4. 不同的对象

例如,当你用到图形库

“matplotlib”

的时候,

“matplotlib”

会提供很多对象,如子图、表格、刻度线、批注等;而在这个过程中,需要

“pandas”

函数协助提供 DataFrame和Series。

三种工具可以帮助你理解陌生的对象:

1、type() # 这是啥?

>>> type(rolls)

numpy.ndarray

2、dir() # 这个可以怎么用

>>> dir(rolls)

>>> rolls.mean() #求平均值

3.6666666666666665

>>> rolls.tolist() #转换为list

[5, 5, 1]

3、help() # 查看更多

rolls.ravel() 可以将多维数组转换为一位数组;

4、运算符

>>> rolls + 100 # 加法运算

array([105, 105, 101])

>>> rolls < 3 #判断是否小于3

array([ False, False, True])

将数列转换为数组:

>>> a = [[1,2],[3,4]]

>>> b = numpy.asarray(a) # 转换为数组

>>> b

array([[1, 2],

[3, 4]])

>>> b[1,-1] # 获取numpy数组第二行的最后一个元素

4

>>> b[0,0] # 获取numpy数组第一行的第一个元素

1

>>> type(b)

# ndarray是指多维数据

解析:

b[0,0]这种用法仅适用于numpy数组,并不适用于list。

5. tensorflow - 用于深度学习的python库

tensorflow是一个常用于深度学习的python库;

看个例子:

import tensorflow as tf

# 创建两个常数,而且都是1

a = tf.constant(1)

b = tf.constant(1)

# 尝试把他们相加

a + b

输出:

所以并不是所有的1+1都等于2哦~

根据python中tensorflow的doc.string显示:这只是提供了一种在模块tensorflow(tf.Session)中计算这些值的方法

# 获取南美人口超过100万的行

df[(df['population'] > 10**6) & (df['continent'] == 'South America')]

为什么会这样呢?

有没有想过为什么当你调用dir()的时候,会出现双下划线的名字,如 ”_ _ doc_ _";

这其实跟操作符超载有关,python程序员如果想要定义运算符的行为时,都需要以双下划线开头和结尾的特殊名称来实现。

例如:

x in [1, 2, 3]

其实上述表达调用的列表方法是

“_

contains

_"

;完整的表述是:

[1, 2, 3]._

contains

_(x)

但是很明显完整的表述很冗长且长得很丑。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值