numpy_learn

numpy

1颜矿、numpy中創(chuàng)建結構化數(shù)據(jù)

import numpy as np
dt = np.dtype([("age",np.int8)])
a = np.array([(10,),(20,),(30,)],dtype=dt)
print(a["age"])

2.numpy的數(shù)組屬性

屬性 說明
ndarray.ndim
ndarray.shape 形狀
ndarray.size 元素總個數(shù)m*n
ndarray.dtype 元素數(shù)據(jù)類型
ndarray.itemsize 每個元素的大小毕莱,字節(jié)為單位
ndarray.flags ndarray對象的內存信息
ndarray.real ndarray元素的實部
ndarray.imag 元素的虛部
ndarray.data 實際數(shù)組的緩沖區(qū)

例子

#a是read-only
a= np.array([1,2,3])
a.flags.writeble=False

3.np創(chuàng)建數(shù)組

  1. np.zeros(shape,dtype=None,order="C")
    示例
b=np.zeros((2,2))#默認為浮點數(shù)
a=np.zeros((2,2),dtype=[("x","i4"),("y","i4")])
#array([[(0, 0), (0, 0)],
       [(0, 0), (0, 0)]], dtype=[('x', '<i4'), ('y', '<i4')])
  1. np.ones(shape,dtype,order="F")
  2. np.asarray(a,dtype=None,order=None) a可以是任意形式的輸入?yún)?shù),列表元組贝搁,列表的元組捷犹,元組的元組耐床,元組的列表,多維數(shù)組置谦。
  3. np.frombuffer(buffer,dtype=float,count=-1,offset=0)實現(xiàn)動態(tài)數(shù)組堂鲤,以流的形式讀入轉換成ndarray對象.參數(shù)count是讀取的數(shù)據(jù)數(shù)量,-1指全部數(shù)據(jù)媒峡;offset指讀取的起始位置瘟栖。
    注意:python3默認str是unicode類型,要在str前加b轉換成bytestring類型谅阿。
  4. np.fromiter(iterable,dtype,count=-1),從可迭代對象建立ndarray對象半哟。
  5. np.arange(start,stop,step,dtype)
  6. np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)創(chuàng)建等差數(shù)列。
  7. np.logspace(start,stop,num=50,endpoint=True,base=10.0,dtype=None)創(chuàng)建等比數(shù)列签餐,base參數(shù)意思是取對數(shù)時候log的下標寓涨。

4.ndarray數(shù)組的切片和索引

  1. slice(start,stop,step) 相當于直接array[2:7:2]
  2. np高級索引(整數(shù)數(shù)組索引,布爾索引氯檐,花式索引)

例一:整數(shù)索引

x=np.arange(10).reshape(2,5)
x[[0,1,0,1],[0,1,0,1]]#第一維取行戒良,第二維取列
#array([0, 6, 0, 6])

例二::與...

x[0:1,1:3](左閉右開)
#array([[1, 2]])
x[...,-1:],返回和原二維數(shù)組的維度一致
#array([[4],
       [9]])

例三:布爾索引

x[x>5]#返回一維結果
#array([6, 7, 8, 9])

例四:花式索引
花式索引指的是利用整數(shù)數(shù)組進行索引。
花式索引根據(jù)索引數(shù)組的值作為目標數(shù)組的某個軸的下標來取值冠摄。對于使用一維整型數(shù)組作為索引糯崎,如果目標是一維數(shù)組几缭,那么索引的結果就是對應位置的元素;如果目標是二維數(shù)組沃呢,那么就是對應下標的行年栓。
花式索引跟切片不一樣,它總是將數(shù)據(jù)復制到新數(shù)組中

x[[1,0]] 互換第一二行
#array([[5, 6, 7, 8, 9],
       [0, 1, 2, 3, 4]])
傳入多個索引數(shù)組(np.ix_)
x[np.ix_([1,0],[2,1,3])]#返回2*3維的二維數(shù)組
#array([[7, 6, 8],
       [2, 1, 3]])

5 np的broadcast機制

廣播的規(guī)則:

讓所有輸入數(shù)組都向其中形狀最長的數(shù)組看齊薄霜,形狀中不足的部分都通過在前面加 1 補齊某抓。
輸出數(shù)組的形狀是輸入數(shù)組形狀的各個維度上的最大值。
如果輸入數(shù)組的某個維度和輸出數(shù)組的對應維度的長度相同或者其長度為 1 時惰瓜,這個數(shù)組能夠用來計算否副,否則出錯。
當輸入數(shù)組的某個維度的長度為 1 時鸵熟,沿著此維度運算時都用此維度上的第一組值副编。

簡單理解:對兩個數(shù)組,分別比較他們的每一個維度(若其中一個數(shù)組沒有當前維度則忽略)流强,滿足:

數(shù)組擁有相同形狀。
當前維度的值相等呻待。
當前維度的值有一個是 1打月。
a=np.array(1,2,3,4,5)
x+a
#array([[ 1,  3,  5,  7,  9],
       [ 6,  8, 10, 12, 14]])
相當于
x+np.tile(a,(2,1))

6. np迭代數(shù)組

np.nditer進行迭代

x=np.arange(6).reshape(2,3)
list(np.nditer(x))默認的是行序有先
#[array(0), array(1), array(2), array(3), array(4), array(5)]
list(np.nditer(x.T))
#[array(0), array(1), array(2), array(3), array(4), array(5)]
a=x.T.copy(order="C")
list(np.nditer(a))
#[array(0), array(3), array(1), array(4), array(2), array(5)]

從上述例子可以看出,a 和 a.T 的遍歷順序是一樣的蚕捉,也就是他們在內存中的存儲順序也是一樣的奏篙,但是 a.T.copy(order = 'C') 的遍歷結果是不同的,那是因為它和前兩種的存儲方式是不一樣的迫淹,默認是按行訪問秘通。

顯示地使用某種順序

list(np.nditer(x,order="F"))
#[array(0), array(3), array(1), array(4), array(2), array(5)]

外部循環(huán)
nditer類的構造器擁有flags參數(shù),

在下面的實例中敛熬,迭代器遍歷對應于每列肺稀,并組合為一維數(shù)組。
list(np.nditer(x,flags=["external_loop"],order="F"))
[array([0, 3]), array([1, 4]), array([2, 5])]

廣播迭代機制

7. np的數(shù)組操作

大致分為幾類:

  • 修改數(shù)組形狀
  • 翻轉數(shù)組
  • 修改數(shù)組維度
  • 鏈接數(shù)組
  • 分割數(shù)組
  • 數(shù)組元素的添加與刪除

修改數(shù)組形狀

函數(shù) 說明
reshape 不改變數(shù)據(jù)应民,修改形狀
flat 數(shù)組元素迭代器
flatten 返回 一份數(shù)組拷貝
ravel 返回展開數(shù)組

翻轉數(shù)組

函數(shù) 說明
transpose 對換數(shù)組的維度
.T 轉置
rollaxis 向后滾動指定的軸
swapaxes 對換數(shù)組的兩個軸

例子

#將軸2滾動到軸0
np.rollaxis(a,2,0)
#原始坐標[1,1,0],轉換成[0,1,1]
np.swapaxes(arr,axis1,axis2)#交換軸1和軸2

修改數(shù)組維度

函數(shù) 說明
broadcast 產(chǎn)生模仿廣播的對象
broadcast_to 將數(shù)組廣播到新形狀
expand_dims 擴展數(shù)組形狀
squeeze 從數(shù)組中刪除一維條目

鏈接數(shù)組

函數(shù) 說明
concatenate 連接沿現(xiàn)有軸的數(shù)組序列
stack 沿著新的軸加入一系列數(shù)組
hstack 水平堆疊列方向
vstack 豎直堆疊话原,行方向

注意
np.stack(arrays,axis),arrays相同形狀的數(shù)組序列,axis返回數(shù)組中的軸诲锹。用于沿新軸連接數(shù)組序列繁仁,會新增一個維度。

分割數(shù)組

函數(shù) 說明
split 將一個數(shù)組分割為多個子數(shù)組
hsplit 將一個數(shù)組水平分割為多個子數(shù)組(按列)
vsplit 將一個數(shù)組分割為多個子數(shù)組(按行)

注意
np.split(arr,indices_or_sections,axis)

a=np.arange(9)
b=np.split(a,[4,7])
#[array([0, 1, 2, 3]), array([4, 5, 6]), array([7, 8])]

數(shù)組元素的添加和刪除

函數(shù) 元素及新數(shù)組
resize 返回指定形狀的新數(shù)組
append 將值添加到數(shù)組末尾
insert 沿指定軸插入到指定下標之前
delete 刪除某個軸的子數(shù)組归园,并返回新數(shù)組
unique 查找數(shù)組內的唯一元素

例子:
np.insert(arr,object,values,axis)

  • arr被插入數(shù)據(jù)的數(shù)組
  • object插入數(shù)據(jù)的索引位置
  • values 要插入的值
  • 按照行列進行插入黄虱,未指定時在插入之前的數(shù)組會被展開。

8. np 的位運算

np的"bitwise_"開頭的函數(shù)是位運算函數(shù)庸诱。

函數(shù) 說明
bitwise_and 位與操作
bitwise_or 位或操作
invert 按位取反
left_shift 向左移動二進制表示的位
right_shift 向右移動二進制表示的位

9.np的字符串函數(shù)

對dtype的numpy.string_或numpy.unicode_的數(shù)組執(zhí)行向量化字符串操作捻浦,這些函數(shù)在字符數(shù)組類numpy.char中定義

函數(shù) 說明
np.char.add() 對兩個數(shù)組的逐個字符串元素進行連接
.multiply() 返回按元素多重連接后的字符串
... python字符類型的一些方法

10. np的數(shù)學公式

三角函數(shù)晤揣,算術運算函數(shù),復數(shù)處理函數(shù)默勾,
np.sin(),cos(),tan(),arctan(),arcsin(),arccos(),

  • 舍入函數(shù)
    np.around(a,decimals)四舍五入
    np.floor()向下取整碉渡。
    np.ceil()向上取整。

11. np的排序母剥,條件篩選函數(shù)

np.sort(a,axis,kind,order)
kind:默認為"quicksort"滞诺,"mergesort"歸并排序,“heapsort”堆排序
np.argsort()返回數(shù)組值從小到大的索引值环疼。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末习霹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子炫隶,更是在濱河造成了極大的恐慌淋叶,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伪阶,死亡現(xiàn)場離奇詭異煞檩,居然都是意外死亡,警方通過查閱死者的電腦和手機栅贴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門斟湃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人檐薯,你說我怎么就攤上這事凝赛。” “怎么了坛缕?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵墓猎,是天一觀的道長。 經(jīng)常有香客問我赚楚,道長毙沾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任直晨,我火速辦了婚禮搀军,結果婚禮上,老公的妹妹穿的比我還像新娘勇皇。我一直安慰自己罩句,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布敛摘。 她就那樣靜靜地躺著门烂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屯远,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天蔓姚,我揣著相機與錄音,去河邊找鬼慨丐。 笑死坡脐,一個胖子當著我的面吹牛,可吹牛的內容都是我干的房揭。 我是一名探鬼主播备闲,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼捅暴!你這毒婦竟也來了恬砂?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤蓬痒,失蹤者是張志新(化名)和其女友劉穎泻骤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梧奢,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡狱掂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了亲轨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片符欠。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瓶埋,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情诊沪,我是刑警寧澤养筒,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站端姚,受9級特大地震影響晕粪,放射性物質發(fā)生泄漏。R本人自食惡果不足惜渐裸,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一巫湘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧昏鹃,春花似錦尚氛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春讯柔,著一層夾襖步出監(jiān)牢的瞬間抡蛙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工魂迄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留粗截,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓捣炬,卻偏偏與公主長得像熊昌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子遥金,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內容

  • [TOC] NumPy numpy 是python語言的一個擴展程序庫, 支持大量的維度數(shù)組與矩陣運算, 此外也針...
    pigdaqiang閱讀 988評論 0 9
  • 0. NumPy的安裝 使用Anaconda 訪問 https://www.anaconda.com/distri...
    小哲1998閱讀 1,516評論 0 16
  • 一浴捆、數(shù)據(jù)的維度 數(shù)據(jù)維度的python表示 一維數(shù)據(jù):列表和集合類型 二維數(shù)據(jù):列表類型多維數(shù)據(jù):列表類型 高維數(shù)...
    MaceJin閱讀 839評論 0 2
  • NumPy Ndarray 對象 NumPy 最重要的一個特點是其 N 維數(shù)組對象 ndarray,它是一系列同類...
    JackHCC閱讀 2,888評論 0 0
  • Numpy 數(shù)組 用list和tuple等數(shù)據(jù)結構表示數(shù)組,從列表產(chǎn)生數(shù)組 a=array(list)稿械,或直接將列...
    Yuri7閱讀 685評論 1 0