Numpy

Ndarray對象

NumPy 最重要的一個特點是其 N 維數(shù)組對象 ndarray
ndarray 對象是用于存放同類型元素的多維數(shù)組
ndarray 內(nèi)部由以下內(nèi)容組成:

  • 一個指向數(shù)據(jù)(內(nèi)存或內(nèi)存映射文件中的一塊數(shù)據(jù))的指針封恰。
  • 數(shù)據(jù)類型或 dtype螺句,描述在數(shù)組中的固定大小值的格子娶桦。
  • 一個表示數(shù)組形狀(shape)的元組,表示各維度大小的元組糕档。
  • 一個跨度元組(stride),其中的整數(shù)指的是為了前進(jìn)到當(dāng)前維度下一個元素需要"跨過"的字節(jié)數(shù)愧杯。
    創(chuàng)建一個 ndarray 只需調(diào)用 NumPy 的 array 函數(shù)即可:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
image.png

插:
numpy array 類的reshape的用法
eg:

x = np.zeros((2,3,4))
x 是一個三維的零向量
x.reshape(2,3,2,2)
x 變成四維

x.reshape(-1)
返回x直接展開為1維的數(shù)組瑞侮,但是x不變。和x.reshape(1,-1)等價
x 的總元素個數(shù): 2*3*4 = 24個
那么x.reshape(n,-1) 返回x展開成(n, 24/n)的數(shù)組
同理:x.reshape(-1, n)返回x展開成(24/n, n)的數(shù)組
x.reshape(n1,n2,-1) 返回x展開成 (n1, n2, 24/(n1*n2))的數(shù)組

ndarray的一些常見屬性:
  • ndarray.ndim:
    秩溪食,即軸的數(shù)量或維度的數(shù)量

  • ndarray.shape:
    數(shù)組的維度囊卜,對于矩陣,n 行 m 列
    返回值是一個元組
    如:a = np.array([[1,2,3],[4,5,6]])
    a.shape -> (2,3)
    通過給shape賦值還可以改變ndarray的結(jié)構(gòu):


    image.png
  • ndarray.size:
    數(shù)組元素的總個數(shù)错沃,相當(dāng)于 .shape 中 n*m 的值

Numpy創(chuàng)建數(shù)組
  • numpy.empty
    numpy.empty 方法用來創(chuàng)建一個指定形狀(shape)栅组、數(shù)據(jù)類型(dtype)且未初始化的數(shù)組:
    numpy.empty(shape, dtype = float, order = 'C')


    image.png

注意 : 數(shù)組元素為隨機(jī)值,因為它們未初始化枢析。

  • numpy.zeros
    創(chuàng)建指定大小的數(shù)組玉掸,數(shù)組元素以 0 來填充:
    numpy.zeros(shape, dtype = float, order = 'C')
    注: 默認(rèn)為浮點數(shù),可以自己設(shè)置數(shù)字類型醒叁,eg:
    y = np.zeros((5,), dtype = np.int)
  • numpy.ones
    用 1 來填充數(shù)組
Numpy從已有的數(shù)組創(chuàng)建數(shù)組:
  • numpy.asarray
    numpy.asarray(a, dtype = None, order = None)


    image.png

    可以把列表司浪,元組等作為參數(shù)a傳入asarray中轉(zhuǎn)化為ndarray

  • numpy.frombuffer
    numpy.frombuffer 用于實現(xiàn)動態(tài)數(shù)組。
    numpy.frombuffer 接受 buffer 輸入?yún)?shù)把沼,以流的形式讀入轉(zhuǎn)化成 ndarray 對象啊易。
  • numpy.fromiter
    numpy.fromiter 方法從可迭代對象中建立 ndarray 對象,返回一維數(shù)組饮睬。
NumPy 從數(shù)值范圍創(chuàng)建數(shù)組
  • numpy.arange
numpy.arange(start, stop, step, dtype)
start : 起始值租谈,默認(rèn)為0
stop : 終止值(不包含)
step: 步長,默認(rèn)為1
dtype:返回ndarray的數(shù)據(jù)類型捆愁,如果沒有提供割去,則會使用輸入數(shù)據(jù)的類型。
x = np.arange(5) 
x -> [0  1  2  3  4]
  • numpy.linspace
    numpy.linspace 函數(shù)用于創(chuàng)建一個一維數(shù)組昼丑,數(shù)組是一個等差數(shù)列構(gòu)成的呻逆,格式如下:
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
start : 序列的起始值
stop:序列的終止值,如果endpoint為true菩帝,該值包含于數(shù)列中
num : 要生成的等步長的樣本數(shù)量页慷,默認(rèn)為50
endpoint : 該值為 true 時,數(shù)列中包含stop值胁附,反之不包含酒繁,默認(rèn)是True。
retstep : 如果為 True 時控妻,生成的數(shù)組中會顯示間距州袒,反之不顯示。 
dtype: ndarray 的數(shù)據(jù)類型

擴(kuò)展:
b =np.linspace(1,10,10).reshape([10,1])
b ->
[[ 1.]
[ 2.]
[ 3.]
[ 4.]
[ 5.]
[ 6.]
[ 7.]
[ 8.]
[ 9.]
[10.]]

  • numpy.logspace
    numpy.logspace 函數(shù)用于創(chuàng)建一個于等比數(shù)列弓候。格式如下:
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
注:
start : 起始值為 base ^ start  eg:base = 10 start = 1郎哭,起始值為10他匪,start = 2 ,起始值為100
stop:同理
剩余同理
NumPy 切片和索引
切片
  • slice 定義切片:
a = np.arange(10)
s = slice(2,7,2) # 從索引2開始切夸研,到索引7截至邦蜜,步長為2
print(a[s]) -> [2,4,6]
  • 冒號切片:
    和python 的list切片一致
  • 帶有省略號的切片:
a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 
a[...,1] # 第二列元素  -> [2 4 5]
a[1,...] # 第二行元素 -> [3,4,5]
a[...,1:] # 第二列及剩下的所有元素:
[[2 3]
 [4 5]
 [5 6]]
Numpy 廣播:

例子:
設(shè)有兩個數(shù)組 a 和 b,如果兩個數(shù)組的形狀相同亥至,a.shape == b.shape , 那么
a*b 的結(jié)果就是a與b數(shù)組對應(yīng)為相乘悼沈。這要求a和b維度相同而且各維度的長度相同。
當(dāng)運算中的兩個數(shù)組形狀不相同時姐扮,numpy自動觸發(fā)廣播機(jī)制絮供。

a = np.array([[ 0, 0, 0],
           [10,10,10],
           [20,20,20],
           [30,30,30]])
b = np.array([1,2,3])
print(a + b)
->
[[ 1  2  3]
 [11 12 13]
 [21 22 23]
 [31 32 33]]  

由此可見,numpy自動把 b 變化成了 [[1,2,3],[1,2,3],[1,2,3],[1,2,3]],以便和a做相加

  • np.tile(a,(m,n))
    就是將矩陣 a 橫向復(fù)制為原來的m倍茶敏,縱向賦值為原來的n倍
數(shù)組修改操作
image.png

待續(xù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末壤靶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惊搏,更是在濱河造成了極大的恐慌贮乳,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恬惯,死亡現(xiàn)場離奇詭異塘揣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)宿崭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來才写,“玉大人葡兑,你說我怎么就攤上這事≡薏荩” “怎么了讹堤?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵,是天一觀的道長厨疙。 經(jīng)常有香客問我洲守,道長,這世上最難降的妖魔是什么沾凄? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任梗醇,我火速辦了婚禮,結(jié)果婚禮上撒蟀,老公的妹妹穿的比我還像新娘叙谨。我一直安慰自己,他們只是感情好保屯,可當(dāng)我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布手负。 她就那樣靜靜地躺著涤垫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪竟终。 梳的紋絲不亂的頭發(fā)上蝠猬,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天,我揣著相機(jī)與錄音统捶,去河邊找鬼榆芦。 笑死,一個胖子當(dāng)著我的面吹牛瘾境,可吹牛的內(nèi)容都是我干的歧杏。 我是一名探鬼主播,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼迷守,長吁一口氣:“原來是場噩夢啊……” “哼犬绒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起兑凿,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤凯力,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后礼华,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咐鹤,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年圣絮,在試婚紗的時候發(fā)現(xiàn)自己被綠了祈惶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡扮匠,死狀恐怖捧请,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情棒搜,我是刑警寧澤疹蛉,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站力麸,受9級特大地震影響可款,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜克蚂,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一闺鲸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧埃叭,春花似錦翠拣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛮粮。三九已至,卻和暖如春谜慌,著一層夾襖步出監(jiān)牢的瞬間然想,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工欣范, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留变泄,地道東北人。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓恼琼,卻偏偏與公主長得像妨蛹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子晴竞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,937評論 2 361