2020-10-20Numpy

數(shù)據(jù)類型及數(shù)組創(chuàng)建

通常將 numpy 庫(kù) 縮寫(xiě)為 np

import numpy as np

1断序、常量

numpy.nan 表示空值

* np.nan != np.nan 兩個(gè)numpy.nan是不相等的

numpy.inf 表示正無(wú)窮大

Inf = inf = infty = Infinity = PINF

numpy.pi 表示圓周率

numpy.e 表示自然常數(shù)


2、常見(jiàn)數(shù)據(jù)類型



3范嘱、時(shí)間日期和時(shí)間增量

numpy.datetime64

從字符串創(chuàng)建datetime64數(shù)組時(shí)滔灶,如果單位不統(tǒng)一普碎,一律轉(zhuǎn)化為最小單位

import numpy

a = np.array(['2020-03', '2020-03-08', '2020-03-08 20:00'], dtype='datetime64')

print(a, a.dtype)

# ['2020-03-01T00:00' '2020-03-08T00:00' '2020-03-08T20:00'] datetime64[m]


用arrange可以創(chuàng)建datetime64數(shù)組,用于生成日期范圍录平。

import numpy as np

a = np.arange('2020-08-01', '2020-08-10', dtype=np.datetime64)

print(a)

# ['2020-08-01' '2020-08-02' '2020-08-03' '2020-08-04' '2020-08-05'

# '2020-08-06' '2020-08-07' '2020-08-08' '2020-08-09']

print(a.dtype) # datetime64[D]

a = np.arange('2020-08-01 20:00', '2020-08-10', dtype=np.datetime64)

print(a)

# ['2020-08-01T20:00' '2020-08-01T20:01' '2020-08-01T20:02' ...

# '2020-08-09T23:57' '2020-08-09T23:58' '2020-08-09T23:59']

print(a.dtype) # datetime64[m]

a = np.arange('2020-05', '2020-12', dtype=np.datetime64)

print(a)

# ['2020-05' '2020-06' '2020-07' '2020-08' '2020-09' '2020-10' '2020-11']

print(a.dtype) # datetime64[M]

timedelta64表示兩個(gè)datetime64的差麻车,于兩個(gè)相減運(yùn)算中的datetime64中較小的一個(gè)保持一致缀皱。

numpy.datetime64 與 datetime.datetime 可以相互轉(zhuǎn)換

import numpy as np

import datetime

dt = datetime.datetime(year=2020, month=6, day=1, hour=20, minute=5, second=30)

dt64 = np.datetime64(dt, 's')

print(dt64, dt64.dtype)

# 2020-06-01T20:05:30 datetime64[s]

dt2 = dt64.astype(datetime.datetime)

print(dt2, type(dt2))

# 2020-06-01 20:05:30 <class 'datetime.datetime'>

numpy.busday_offset?

參數(shù):offset 偏移量 forward backward 向前后取有效工作日

將指定的偏移量應(yīng)用于工作日,單位天('D')动猬。計(jì)算下一個(gè)工作日啤斗,如果當(dāng)前日期為非工作日,默認(rèn)報(bào)錯(cuò)枣察≌迹可以指定 forward 或

backward 規(guī)則來(lái)避免報(bào)錯(cuò)。(一個(gè)是向前取第一個(gè)有效的工作日序目,一個(gè)是向后取第一個(gè)有效的工作日)

import numpy as np

# 2020-07-10 星期五

a = np.busday_offset('2020-07-10', offsets=1)

print(a) # 2020-07-13

a = np.busday_offset('2020-07-11', offsets=1)

print(a)

# ValueError: Non-business day date in busday_offset

a = np.busday_offset('2020-07-11', offsets=0, roll='forward')

b = np.busday_offset('2020-07-11', offsets=0, roll='backward')

print(a) # 2020-07-13

print(b) # 2020-07-10

a = np.busday_offset('2020-07-11', offsets=1, roll='forward')

b = np.busday_offset('2020-07-11', offsets=1, roll='backward')

print(a) # 2020-07-14

print(b) # 2020-07-13

import numpy as np

# 2020-07-10 星期五

a = np.is_busday('2020-07-10')

b = np.is_busday('2020-07-11')

print(a) # True

print(b) # False

# 統(tǒng)計(jì)一個(gè)時(shí)間周期內(nèi)的工作天數(shù)?

import numpy as np?

# 2020-07-10 星期五

begindates = np.datetime64('2020-07-10')

enddates = np.datetime64('2020-07-20')

a = np.arange(begindates, enddates, dtype='datetime64')

b = np.count_nonzero(np.is_busday(a))

print(a)

# ['2020-07-10' '2020-07-11' '2020-07-12' '2020-07-13' '2020-07-14'

# '2020-07-15' '2020-07-16' '2020-07-17' '2020-07-18' '2020-07-19']

print(b) # 6

# 自定義周掩碼值臂痕,即指定一周中哪些星期是工作日。

import numpy as np

# 2020-07-10 星期五

a = np.is_busday('2020-07-10', weekmask=[1, 1, 1, 1, 1, 0, 0])

b = np.is_busday('2020-07-10', weekmask=[1, 1, 1, 1, 0, 0, 1])

print(a) # True

print(b) # False


array 與 asarray 的區(qū)別是當(dāng)數(shù)據(jù)源是ndarray 時(shí)猿涨, array() 仍然會(huì) copy 出一個(gè)副本握童,占用新的內(nèi)存,但不改變 dtype 時(shí)叛赚, asarray() 不會(huì)


numy.fromfuction() 構(gòu)建數(shù)組

import numpy as np

def f(x, y):

return 10 * x + y

x = np.fromfunction(f, (5, 4), dtype=int)

print(x)

# [[ 0 1 2 3]

# [10 11 12 13]

# [20 21 22 23]

# [30 31 32 33]

# [40 41 42 43]]

x = np.fromfunction(lambda i, j: i == j, (3, 3), dtype=int)

print(x)

# [[ True False False]

# [False True False]

# [False False True]]

numpy.zeros()

numpy.zeros_like()

numpy.ones()

numpy.ones_like()

numpy.empty()

numpy.empty_like()

numpy.full()

numpy.full_like()

import numpy as np

x = np.zeros(5)

print(x) # [0. 0. 0. 0. 0.]

x = np.zeros([2, 3])

print(x)

# [[0. 0. 0.]

# [0. 0. 0.]]

x = np.array([[1, 2, 3], [4, 5, 6]])

y = np.zeros_like(x)

print(y)

# [[0 0 0]

# [0 0 0]]

x = np.ones(5)

print(x) # [1. 1. 1. 1. 1.]

x = np.ones([2, 3])

print(x)

# [[1. 1. 1.]

# [1. 1. 1.]]

x = np.array([[1, 2, 3], [4, 5, 6]])

y = np.ones_like(x)

print(y)

# [[1 1 1]

# [1 1 1]]


numpy.eye() 返回對(duì)角線上為1澡绩,其他地方為零的單位數(shù)組

identity() 返回一個(gè)方的單位數(shù)組

numpy.diag() 提取對(duì)角線

import numpy as np

x = np.arange(9).reshape((3, 3))

print(x)

# [[0 1 2]

# [3 4 5]

# [6 7 8]]

print(np.diag(x)) # [0 4 8]

print(np.diag(x, k=1)) # [1 5]

print(np.diag(x, k=-1)) # [3 7]

v = [1, 3, 5, 7]

x = np.diag(v)

print(x)

# [[1 0 0 0]

# [0 3 0 0]

# [0 0 5 0]

# [0 0 0 7]]

利用數(shù)值范圍來(lái)創(chuàng)建ndarray

1. arange() 函數(shù):返回給定間隔內(nèi)的均勻間隔的值。

2. linspace() 函數(shù):返回指定間隔內(nèi)的等間隔數(shù)字俺附。

3. logspace() 函數(shù):返回?cái)?shù)以對(duì)數(shù)刻度均勻分布肥卡。

4. numpy.random.rand() 返回一個(gè)由[0,1)內(nèi)的隨機(jī)數(shù)組成的數(shù)組。

import numpy as np

x = np.arange(5)

print(x) # [0 1 2 3 4]

x = np.arange(3, 7, 2)

print(x) # [3 5]

x = np.linspace(start=0, stop=2, num=9)

print(x)

# [0. 0.25 0.5 0.75 1. 1.25 1.5 1.75 2. ]

x = np.logspace(0, 1, 5)

print(np.around(x, 2))

# [ 1. 1.78 3.16 5.62 10. ]


import numpy as np

personType = np.dtype({

'names': ['name', 'age', 'weight'],

'formats': ['U30', 'i8', 'f8']})

a = np.array([('Liming', 24, 63.9), ('Mike', 15, 67.), ('Jan', 34, 45.8)],

dtype=personType)

print(a, type(a))

# [('Liming', 24, 63.9) ('Mike', 15, 67. ) ('Jan', 34, 45.8)]

# <class 'numpy.ndarray'>


import numpy as np

personType = np.dtype([('name', 'U30'), ('age', 'i8'), ('weight', 'f8')])

a = np.array([('Liming', 24, 63.9), ('Mike', 15, 67.), ('Jan', 34, 45.8)],

dtype=personType)

print(a, type(a))

# [('Liming', 24, 63.9) ('Mike', 15, 67. ) ('Jan', 34, 45.8)]

# <class 'numpy.ndarray'>

# 結(jié)構(gòu)數(shù)組的取值方式和一般數(shù)組差不多事镣,可以通過(guò)下標(biāo)取得元素:

print(a[0])

# ('Liming', 24, 63.9)

print(a[-2:])

# [('Mike', 15, 67. ) ('Jan', 34, 45.8)]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末步鉴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子璃哟,更是在濱河造成了極大的恐慌氛琢,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件随闪,死亡現(xiàn)場(chǎng)離奇詭異阳似,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)铐伴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門撮奏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人盛杰,你說(shuō)我怎么就攤上這事挽荡。” “怎么了即供?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵定拟,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)青自,這世上最難降的妖魔是什么株依? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮延窜,結(jié)果婚禮上恋腕,老公的妹妹穿的比我還像新娘。我一直安慰自己逆瑞,他們只是感情好荠藤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著获高,像睡著了一般哈肖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上念秧,一...
    開(kāi)封第一講書(shū)人閱讀 51,590評(píng)論 1 305
  • 那天淤井,我揣著相機(jī)與錄音,去河邊找鬼摊趾。 笑死币狠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的砾层。 我是一名探鬼主播漩绵,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼肛炮!你這毒婦竟也來(lái)了渐行?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤铸董,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后肴沫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體粟害,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年颤芬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悲幅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡站蝠,死狀恐怖汰具,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情菱魔,我是刑警寧澤留荔,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站澜倦,受9級(jí)特大地震影響聚蝶,放射性物質(zhì)發(fā)生泄漏杰妓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一碘勉、第九天 我趴在偏房一處隱蔽的房頂上張望巷挥。 院中可真熱鬧,春花似錦验靡、人聲如沸倍宾。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)高职。三九已至,卻和暖如春兼蕊,著一層夾襖步出監(jiān)牢的瞬間初厚,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工孙技, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留产禾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓牵啦,卻偏偏與公主長(zhǎng)得像亚情,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子哈雏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355