數(shù)組/矩陣的創(chuàng)建/查詢/計(jì)算/序列化

數(shù)組的創(chuàng)建和查詢

  • 普通列表的形式創(chuàng)建數(shù)組
import numpy as np
# create list from python
list_1 = [1, 2, 3, 4]
list_1
    [1, 2, 3, 4]
array_1 = np.array(list_1)
array_1
    array([1, 2, 3, 4])
list_2 = [5, 6, 7, 8]
array_2 = np.array([list_1, list_2])

array_2  # 二維數(shù)組
    array([[1, 2, 3, 4],
          [5, 6, 7, 8]])
  • 數(shù)組屬性
array_2.shape  # 數(shù)組的類型 2行4列的數(shù)組
    (2, 4)
array_2.size    # 返回?cái)?shù)組的元素個(gè)數(shù)
    8
array_2.dtype  # 返回?cái)?shù)組元素的類型股毫,或者精確度最高的數(shù)據(jù)類型
    dtype('int64')
array_3 = np.array([[1.0, 2, 3], [4.0, 5, 6]])
array_3.dtype  # 返回?cái)?shù)組元素的類型,或者精確度最高的數(shù)據(jù)類型
    dtype('float64')
array_4 = np.arange(1, 10, 2)
array_4
    array([1, 3, 5, 7, 9])
  • 全零矩陣和單位矩陣
np.zeros(4)
    array([0., 0., 0., 0.])
np.zeros([2, 3])  # 全0矩陣
    array([[0., 0., 0.],
          [0., 0., 0.]])
np.eye(5)  # 單位矩陣
    array([[1., 0., 0., 0., 0.],
          [0., 1., 0., 0., 0.],
          [0., 0., 1., 0., 0.],
          [0., 0., 0., 1., 0.],
          [0., 0., 0., 0., 1.]])
np.eye(5).dtype
    dtype('float64')
  • 查詢數(shù)組元素
b = np.array([[1, 2, 3], [4, 5, 6]])
b[1][0]  #  訪問(wèn)矩陣的元素
    4

c = np.array([[1, 2, 3], [4, 5, 6], [8, 9 ,10]])
c
    array([[ 1,  2,  3],
          [ 4,  5,  6],
          [ 8,  9, 10]])
c[:2, 1:]  #  :2代表行陨倡,既0和1行骑疆,1:代表列田篇,既1列到最后一列
    array([[2, 3],
          [5, 6]])

數(shù)據(jù)與矩陣運(yùn)算

  • 數(shù)組的創(chuàng)建
import numpy as np
np.random.randn(10)   # 創(chuàng)建一維N個(gè)元素的數(shù)組替废,參數(shù)正態(tài)分布
    array([ 1.59437623,  0.82730971,  0.47005237, -0.98136635,  1.5803171 ,
           -0.7388171 ,  0.44446894, -0.73766478, -1.18912274, -0.75089731])

np.random.randint(10, size=(2, 3))   # 得到一個(gè)2行3列的二維數(shù)組 ,元素0~9隨機(jī)整數(shù)
    array([[8, 8, 7],
           [0, 5, 0]])

np.random.randint(10, size = 20)  # 創(chuàng)建一維數(shù)組,20個(gè)元素
    array([5, 9, 0, 2, 8, 2, 9, 2, 0, 1, 7, 1, 9, 9, 2, 0, 5, 5, 3, 9])

np.random.randint(10, size = 20).reshape(4, 5)   # 重塑成一個(gè)二維數(shù)組4行5列
    array([[5, 8, 5, 4, 2],
           [2, 1, 5, 1, 5],
           [3, 5, 5, 7, 6],
           [9, 2, 8, 3, 8]])
  • 數(shù)組的運(yùn)算
a = np.random.randint(10, size = 20).reshape(4, 5) 
b = np.random.randint(10, size = 20).reshape(4, 5) 

a
    array([[6, 0, 9, 7, 1],
           [5, 9, 4, 1, 4],
           [2, 6, 1, 2, 0],
           [8, 2, 3, 5, 8]])

b
    array([[5, 8, 3, 5, 1],
           [2, 4, 7, 0, 4],
           [9, 9, 9, 3, 3],
           [8, 5, 4, 3, 8]])

a + b   # 數(shù)組的加法泊柬,相同行列的數(shù)組對(duì)應(yīng)位置元素的相加椎镣、減

    array([[11,  8, 12, 12,  2],
           [ 7, 13, 11,  1,  8],
           [11, 15, 10,  5,  3],
           [16,  7,  7,  8, 16]])

a * b  # 數(shù)組的乘法,相同行列的數(shù)組對(duì)應(yīng)位置元素的乘兽赁、除
    array([[30,  0, 27, 35,  1],
           [10, 36, 28,  0, 16],
           [18, 54,  9,  6,  0],
           [64, 10, 12, 15, 64]])
  • 矩陣創(chuàng)建
np.mat([[1, 2, 3], [4, 5, 6]])   # 創(chuàng)建二維矩陣

    matrix([[1, 2, 3],
            [4, 5, 6]])

a  # 數(shù)組

    array([[6, 0, 9, 7, 1],
           [5, 9, 4, 1, 4],
           [2, 6, 1, 2, 0],
           [8, 2, 3, 5, 8]])

np.mat(a)    # 數(shù)組轉(zhuǎn)換為矩陣
    matrix([[6, 0, 9, 7, 1],
            [5, 9, 4, 1, 4],
            [2, 6, 1, 2, 0],
            [8, 2, 3, 5, 8]])
  • 矩陣的運(yùn)算
A = np.mat(a)
B = np.mat(b)
A
    matrix([[6, 0, 9, 7, 1],
            [5, 9, 4, 1, 4],
            [2, 6, 1, 2, 0],
            [8, 2, 3, 5, 8]])
B
    matrix([[5, 8, 3, 5, 1],
            [2, 4, 7, 0, 4],
            [9, 9, 9, 3, 3],
            [8, 5, 4, 3, 8]])

A + B   #  矩陣的相加状答, 對(duì)應(yīng)位置元素的相加、減
    matrix([[11,  8, 12, 12,  2],
            [ 7, 13, 11,  1,  8],
            [11, 15, 10,  5,  3],
            [16,  7,  7,  8, 16]])

# A矩陣和B矩陣相乘闸氮,A矩陣的行數(shù)必須和B矩陣的列數(shù)相等才可以
a = np.mat(np.random.randint(10, size = 20).reshape(4, 5))  # 4行 5列
b = np.mat(np.random.randint(10, size = 20).reshape(5, 4))  # 5行 4列

a
    matrix([[5, 4, 0, 8, 5],
            [6, 4, 9, 3, 8],
            [0, 4, 9, 0, 2],
            [8, 0, 4, 0, 0]])

b
    matrix([[6, 8, 0, 6],
            [4, 7, 3, 9],
            [5, 5, 1, 0],
            [3, 6, 9, 9],
            [7, 2, 3, 0]])

a * b  # 生成一個(gè)4*4的矩陣: 4行4列
    matrix([[105, 126,  99, 138],
            [162, 155,  72,  99],
            [ 75,  77,  27,  36],
            [ 68,  84,   4,  48]])
  • array常用的函數(shù)
a = np.random.randint(10, size = 20).reshape(4, 5)  # 4行 5列 的數(shù)組
a
    array([[2, 5, 4, 4, 8],
           [1, 3, 0, 4, 6],
           [1, 1, 6, 6, 2],
           [3, 6, 1, 9, 7]])
np.unique(a)   # 返回?cái)?shù)組去重后的所有元素剪况。類似set(list)
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

sum(a)  # 返回array每個(gè)列的和值
    array([ 7, 15, 11, 23, 23])

sum(a[0])    # 計(jì)算第0行元素的和

    23

sum(a[:, 2:])  # 計(jì)算所有行的第3列以后教沾,每列的和
    array([11, 23, 23])

a.max()   # 整個(gè)array的最大值

    9

max(a[1:, 1])    # 返回第二行起蒲跨,第二列的最大值

    6

使用pickle序列化numpy array

import pickle
import numpy as np

x = np.arange(10)   # 創(chuàng)建一個(gè)10個(gè)元素的一維array
x
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
f = open('x.pkl', 'wb')  # 打開(kāi)文件x.pkl,準(zhǔn)備以二進(jìn)制形式寫入數(shù)據(jù)
pickle.dump(x, f)   #  x對(duì)象寫入f文件
f.close()

f = open('x.pkl','rb')  # 打開(kāi)文件授翻,準(zhǔn)備以二進(jìn)制讀取數(shù)據(jù)
y = pickle.load(f)
y
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.save('one_array', x)   # 通過(guò)numpy的save方法或悲,把x序列化到文件one_array.npy文件
np.load('one_array.npy')    # 通過(guò)numpy的load方法,把文件one_array.npy的內(nèi)容反序列化出來(lái)
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

z = np.arange(20)
z
    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
           17, 18, 19])

np.savez('two_array.npz', a=x, b=z)   # 序列化多個(gè)對(duì)象到一個(gè)文件
 c = np.load('two_array.npz')       # 反序列化到變量c, 然后取出:  a 堪唐、b
c['a']
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
c['b']
    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
           17, 18, 19])

type(c)
    numpy.lib.npyio.NpzFile

查看numpy manual

https://docs.scipy.org/doc/numpy/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末巡语,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子淮菠,更是在濱河造成了極大的恐慌男公,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件合陵,死亡現(xiàn)場(chǎng)離奇詭異枢赔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)拥知,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門踏拜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人低剔,你說(shuō)我怎么就攤上這事速梗。” “怎么了襟齿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵姻锁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我猜欺,道長(zhǎng)位隶,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任替梨,我火速辦了婚禮钓试,結(jié)果婚禮上装黑,老公的妹妹穿的比我還像新娘。我一直安慰自己弓熏,他們只是感情好恋谭,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著挽鞠,像睡著了一般疚颊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上信认,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天材义,我揣著相機(jī)與錄音,去河邊找鬼嫁赏。 笑死其掂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的潦蝇。 我是一名探鬼主播款熬,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼攘乒!你這毒婦竟也來(lái)了贤牛?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤则酝,失蹤者是張志新(化名)和其女友劉穎殉簸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體沽讹,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡般卑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妥泉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片椭微。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖盲链,靈堂內(nèi)的尸體忽然破棺而出蝇率,到底是詐尸還是另有隱情,我是刑警寧澤刽沾,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布本慕,位于F島的核電站,受9級(jí)特大地震影響侧漓,放射性物質(zhì)發(fā)生泄漏锅尘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藤违。 院中可真熱鬧浪腐,春花似錦、人聲如沸顿乒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)璧榄。三九已至特漩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間骨杂,已是汗流浹背涂身。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搓蚪,地道東北人蛤售。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像陕凹,于是被迫代替她去往敵國(guó)和親悍抑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鳄炉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 數(shù)組是值的有序集合杜耙。每個(gè)值叫做一個(gè)元素,而每個(gè)元素在數(shù)組中有一個(gè)位置拂盯,以數(shù)字表示佑女,稱為索引。 JavaScript...
    劼哥stone閱讀 1,128評(píng)論 6 20
  • 首先給大家介紹javascript jquery中定義數(shù)組與操作的相關(guān)知識(shí)谈竿,具體內(nèi)容如下所示: 1.認(rèn)識(shí)數(shù)組 數(shù)組...
    JamHsiao_aaa4閱讀 1,897評(píng)論 0 2
  • 數(shù)組總共有22種方法团驱,本文將其分為對(duì)象繼承方法、數(shù)組轉(zhuǎn)換方法空凸、棧和隊(duì)列方法嚎花、數(shù)組排序方法、數(shù)組拼接方法呀洲、創(chuàng)建子數(shù)組...
    Sachie閱讀 883評(píng)論 0 7
  • 超級(jí)開(kāi)心 我又學(xué)會(huì)了一項(xiàng)小技能 我會(huì)制作H5了 耶?
    紫羅蘭_dbf6閱讀 107評(píng)論 0 0
  • 此時(shí)燭光如蠶豆紊选,高掛山心照寂寞。何須多用詞粉飾道逗?群山唯你一枝秀兵罢。
    耀圓的守護(hù)神閱讀 198評(píng)論 0 0