數(shù)字日期和時(shí)間
數(shù)字的四舍五入
- 簡單的四舍五入使用round()
- 當(dāng)一個(gè)值剛好在兩個(gè)邊界的中間的時(shí)候昼扛, round 函數(shù)返回離它最近的偶數(shù)。 也就是說,對1.5或者2.5的舍入運(yùn)算都會(huì)得到2疫稿。
- 傳給 round() 函數(shù)的 ndigits 參數(shù)可以是負(fù)數(shù)蟋定,這種情況下粉臊, 舍入運(yùn)算會(huì)作用在十位、百位驶兜、千位等上面扼仲。比如
>>> round(1.23, 1)
1.2
>>> round(1.27, 1)
1.3
>>> round(1.25361,3)
1.254
>>> a = 1627731
#個(gè)位
>>> round(a, -1)
1627730
#十位
>>> round(a, -2)
1627700
#百位
>>> round(a, -3)
1628000
>>>
精確的浮點(diǎn)數(shù)運(yùn)算使用decimal
>>> from decimal import Decimal
>>> a = Decimal('4.2')
>>> b = Decimal('2.1')
>>> a + b
Decimal('6.3')
>>> print(a + b)
6.3
>>> (a + b) == Decimal('6.3')
復(fù)數(shù)運(yùn)算
>>> a = complex(2, 4)
>>> b = 3 - 5j
>>> a
(2+4j)
>>> b
(3-5j)
#對應(yīng)的實(shí)部、虛部和共軛復(fù)數(shù)可以很容易的獲取
>>> a.real
2.0
>>> a.imag
4.0
>>> a.conjugate()
(2-4j)
- 如果要執(zhí)行其他的復(fù)數(shù)函數(shù)比如正弦抄淑、余弦或平方根屠凶,使用 cmath 模塊
>>> import cmath
>>> cmath.sin(a)
(24.83130584894638-11.356612711218174j)
>>> cmath.cos(a)
(-11.36423470640106-24.814651485634187j)
>>> cmath.exp(a)
(-4.829809383269385-5.5920560936409816j)
>>>
分?jǐn)?shù)運(yùn)算
>>> from fractions import Fraction
>>> a = Fraction(5, 4)
>>> b = Fraction(7, 16)
>>> print(a + b)
27/16
>>> print(a * b)
35/64
大型數(shù)組運(yùn)算
>>> import numpy as np
>>> x = [1, 2, 3, 4]
>>> y = [5, 6, 7, 8]
>>> x * 2
[1, 2, 3, 4, 1, 2, 3, 4]
>>> x + 10
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "int") to list
>>> x + y
[1, 2, 3, 4, 5, 6, 7, 8]
>>> import numpy as np
>>> ax = np.array([1, 2, 3, 4])
>>> ay = np.array([5, 6, 7, 8])
>>> ax * 2
array([2, 4, 6, 8])
>>> ax + 10
array([11, 12, 13, 14])
>>> ax + ay
array([ 6, 8, 10, 12])
>>> ax * ay
array([ 5, 12, 21, 32])
隨機(jī)選擇
>>> import random
>>> values = [1, 2, 3, 4, 5, 6]
>>> random.choice(values)
2
>>> random.choice(values)
3
- 提取出N個(gè)不同元素的樣本用來做進(jìn)一步的操作
>>> random.sample(values, 2)
[6, 2]
- 如果你僅僅只是想打亂序列中元素的順序,可以使用 random.shuffle()
>>> random.shuffle(values)
>>> values
[2, 4, 6, 5, 3, 1]
- 生成隨機(jī)整數(shù)肆资,請使用 random.randint()
>>> random.randint(0,10)
2
>>> random.randint(0,10)
5
- 生成0到1范圍內(nèi)均勻分布的浮點(diǎn)數(shù)
>>> random.random()
0.9406677561675867
基本的日期與時(shí)間轉(zhuǎn)換
- 為了執(zhí)行不同時(shí)間單位的轉(zhuǎn)換和計(jì)算矗愧,請使用 datetime 模塊。
>>> from datetime import timedelta
>>> from datetime import datetime
>>> a = timedelta(days=2, hours=6)
>>> b = timedelta(hours=4.5)
>>> c = a + b
>>> c.days
2
>>> c.seconds
37800
>>> c.seconds / 3600
10.5
>>> a = datetime(2012, 9, 23)
>>> print(a + timedelta(days=10))
2012-10-03 00:00:00
>>> b = datetime(2012, 12, 21)
>>> d = b - a
>>> d.days
89
>>> now = datetime.today()
>>> print(now)
2012-12-21 14:54:43.094063
>>> print(now + timedelta(minutes=10))
2012-12-21 15:04:43.094063
>>>
字符串轉(zhuǎn)換為日期
>>> from datetime import datetime
>>> text = '2012-09-20'
>>> y = datetime.strptime(text, '%Y-%m-%d')