日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

数据分析之numpy

發(fā)布時(shí)間:2025/3/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据分析之numpy 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、NumPy Ndarray 對(duì)象

NumPy 最重要的一個(gè)特點(diǎn)是其 N 維數(shù)組對(duì)象 ndarray,它是一系列同類(lèi)型數(shù)據(jù)的集合,以 0 下標(biāo)為開(kāi)始進(jìn)行集合中元素的索引。

ndarray 對(duì)象是用于存放同類(lèi)型元素的多維數(shù)組。

ndarray 中的每個(gè)元素在內(nèi)存中都有相同存儲(chǔ)大小的區(qū)域。

ndarray 內(nèi)部由以下內(nèi)容組成:

  • 一個(gè)指向數(shù)據(jù)(內(nèi)存或內(nèi)存映射文件中的一塊數(shù)據(jù))的指針。

  • 數(shù)據(jù)類(lèi)型或 dtype,描述在數(shù)組中的固定大小值的格子。

  • 一個(gè)表示數(shù)組形狀(shape)的元組,表示各維度大小的元組。

  • 一個(gè)跨度元組(stride),其中的整數(shù)指的是為了前進(jìn)到當(dāng)前維度下一個(gè)元素需要"跨過(guò)"的字節(jié)數(shù)。

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0) """ object 數(shù)組或嵌套的數(shù)列 dtype 數(shù)組元素的數(shù)據(jù)類(lèi)型,可選 copy 對(duì)象是否需要復(fù)制,可選 order 創(chuàng)建數(shù)組的樣式,C為行方向,F為列方向,A為任意方向(默認(rèn)) subok 默認(rèn)返回一個(gè)與基類(lèi)類(lèi)型一致的數(shù)組 ndmin 指定生成數(shù)組的最小維度 """ View Code

二、Numpy數(shù)據(jù)類(lèi)型

numpy 支持的數(shù)據(jù)類(lèi)型比 Python 內(nèi)置的類(lèi)型要多很多,基本上可以和 C 語(yǔ)言的數(shù)據(jù)類(lèi)型對(duì)應(yīng)上,其中部分類(lèi)型對(duì)應(yīng)為 Python 內(nèi)置的類(lèi)型。

bool_ 布爾型數(shù)據(jù)類(lèi)型(True 或者 False) int_ 默認(rèn)的整數(shù)類(lèi)型(類(lèi)似于 C 語(yǔ)言中的 long,int32 或 int64) intc 與 C 的 int 類(lèi)型一樣,一般是 int32 或 int 64 intp 用于索引的整數(shù)類(lèi)型(類(lèi)似于 C 的 ssize_t,一般情況下仍然是 int32 或 int64) int8 字節(jié)(-128 to 127) int16 整數(shù)(-32768 to 32767) int32 整數(shù)(-2147483648 to 2147483647) int64 整數(shù)(-9223372036854775808 to 9223372036854775807) uint8 無(wú)符號(hào)整數(shù)(0 to 255) uint16 無(wú)符號(hào)整數(shù)(0 to 65535) uint32 無(wú)符號(hào)整數(shù)(0 to 4294967295) uint64 無(wú)符號(hào)整數(shù)(0 to 18446744073709551615) float_ float64 類(lèi)型的簡(jiǎn)寫(xiě) float16 半精度浮點(diǎn)數(shù),包括:1 個(gè)符號(hào)位,5 個(gè)指數(shù)位,10 個(gè)尾數(shù)位 float32 單精度浮點(diǎn)數(shù),包括:1 個(gè)符號(hào)位,8 個(gè)指數(shù)位,23 個(gè)尾數(shù)位 float64 雙精度浮點(diǎn)數(shù),包括:1 個(gè)符號(hào)位,11 個(gè)指數(shù)位,52 個(gè)尾數(shù)位 complex_ complex128 類(lèi)型的簡(jiǎn)寫(xiě),即 128 位復(fù)數(shù) complex64 復(fù)數(shù),表示雙 32 位浮點(diǎn)數(shù)(實(shí)數(shù)部分和虛數(shù)部分) complex128 復(fù)數(shù),表示雙 64 位浮點(diǎn)數(shù)(實(shí)數(shù)部分和虛數(shù)部分) View Code

三、Numpy數(shù)組屬性

NumPy 數(shù)組的維數(shù)稱(chēng)為秩(rank),一維數(shù)組的秩為 1,二維數(shù)組的秩為 2,以此類(lèi)推。

在 NumPy中,每一個(gè)線(xiàn)性的數(shù)組稱(chēng)為是一個(gè)軸(axis),也就是維度(dimensions)。比如說(shuō),二維數(shù)組相當(dāng)于是兩個(gè)一維數(shù)組,其中第一個(gè)一維數(shù)組中每個(gè)元素又是一個(gè)一維數(shù)組。所以一維數(shù)組就是 NumPy 中的軸(axis),第一個(gè)軸相當(dāng)于是底層數(shù)組,第二個(gè)軸是底層數(shù)組里的數(shù)組。而軸的數(shù)量——秩,就是數(shù)組的維數(shù)。

ndarray.ndim 秩,即軸的數(shù)量或維度的數(shù)量 ndarray.shape 數(shù)組的維度,對(duì)于矩陣,n 行 m 列 ndarray.size 數(shù)組元素的總個(gè)數(shù),相當(dāng)于 .shape 中 n*m 的值 ndarray.dtype ndarray 對(duì)象的元素類(lèi)型 ndarray.itemsize ndarray 對(duì)象中每個(gè)元素的大小,以字節(jié)為單位 ndarray.flags ndarray 對(duì)象的內(nèi)存信息 ndarray.real ndarray元素的實(shí)部 ndarray.imag ndarray 元素的虛部 ndarray.data 包含實(shí)際數(shù)組元素的緩沖區(qū),由于一般通過(guò)數(shù)組的索引獲取元素,所以通常不需要使用這個(gè)屬性。 View Code

四、數(shù)組的創(chuàng)建

numpy.empty(shape, dtype = float, order = 'C') shape 數(shù)組形狀 dtype 數(shù)據(jù)類(lèi)型,可選 order 有"C""F"兩個(gè)選項(xiàng),分別代表,行優(yōu)先和列優(yōu)先,在計(jì)算機(jī)內(nèi)存中的存儲(chǔ)元素的順序。 numpy.empty numpy.zeros(shape, dtype = float, order = 'C') shape 數(shù)組形狀 dtype 數(shù)據(jù)類(lèi)型,可選 order 'C' 用于 C 的行數(shù)組,或者 'F' 用于 FORTRAN 的列數(shù)組 numpy.zeros numpy.ones(shape, dtype = None, order = 'C') shape 數(shù)組形狀 dtype 數(shù)據(jù)類(lèi)型,可選 order 'C' 用于 C 的行數(shù)組,或者 'F' 用于 FORTRAN 的列數(shù)組 numpy.ones

從已有的數(shù)組創(chuàng)建數(shù)組:

numpy.asarray(a, dtype = None, order = None) a 任意形式的輸入?yún)?shù),可以是,列表, 列表的元組, 元組, 元組的元組, 元組的列表,多維數(shù)組 dtype 數(shù)據(jù)類(lèi)型,可選 order 可選,有"C""F"兩個(gè)選項(xiàng),分別代表,行優(yōu)先和列優(yōu)先,在計(jì)算機(jī)內(nèi)存中的存儲(chǔ)元素的順序。 numpy.asarray numpy.frombuffer 用于實(shí)現(xiàn)動(dòng)態(tài)數(shù)組。 numpy.frombuffer 接受 buffer 輸入?yún)?shù),以流的形式讀入轉(zhuǎn)化成 ndarray 對(duì)象。numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0) buffer 可以是任意對(duì)象,會(huì)以流的形式讀入。 dtype 返回?cái)?shù)組的數(shù)據(jù)類(lèi)型,可選 count 讀取的數(shù)據(jù)數(shù)量,默認(rèn)為-1,讀取所有數(shù)據(jù)。 offset 讀取的起始位置,默認(rèn)為0。 numpy.frombuffer numpy.fromiter(iterable, dtype, count=-1) iterable 可迭代對(duì)象 dtype 返回?cái)?shù)組的數(shù)據(jù)類(lèi)型 count 讀取的數(shù)據(jù)數(shù)量,默認(rèn)為-1,讀取所有數(shù)據(jù) numpy.fromiter

從數(shù)值范圍創(chuàng)建數(shù)組:

創(chuàng)建數(shù)值范圍并返回 ndarray 對(duì)象numpy.arange(start, stop, step, dtype) start 起始值,默認(rèn)為0 stop 終止值(不包含) step 步長(zhǎng),默認(rèn)為1 dtype 返回ndarray的數(shù)據(jù)類(lèi)型,如果沒(méi)有提供,則會(huì)使用輸入數(shù)據(jù)的類(lèi)型。 numpy.arange 創(chuàng)建一個(gè)一維數(shù)組,數(shù)組是一個(gè)等差數(shù)列構(gòu)成的 np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) start 序列的起始值 stop 序列的終止值,如果endpoint為true,該值包含于數(shù)列中 num 要生成的等步長(zhǎng)的樣本數(shù)量,默認(rèn)為50 endpoint 該值為 ture 時(shí),數(shù)列中中包含stop值,反之不包含,默認(rèn)是True。 retstep 如果為 True 時(shí),生成的數(shù)組中會(huì)顯示間距,反之不顯示。 dtype ndarray 的數(shù)據(jù)類(lèi)型 numpy.linspace 用于創(chuàng)建一個(gè)于等比數(shù)列np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None) start 序列的起始值為:base ** start stop 序列的終止值為:base ** stop。如果endpoint為true,該值包含于數(shù)列中 num 要生成的等步長(zhǎng)的樣本數(shù)量,默認(rèn)為50 endpoint 該值為 ture 時(shí),數(shù)列中中包含stop值,反之不包含,默認(rèn)是True。 base 對(duì)數(shù) log 的底數(shù)。 dtype ndarray 的數(shù)據(jù)類(lèi)型 numpy.logspace

五、Numpy數(shù)組的切片與索引

ndarray對(duì)象的內(nèi)容可以通過(guò)索引或切片來(lái)訪(fǎng)問(wèn)和修改,與 list 的切片操作一樣。

高級(jí)索引:

import numpy as np x = np.array([[1, 2], [3, 4], [5, 6]]) y = x[[0,1,2], [0,1,0]] print (y)[1 4 5] 整數(shù)數(shù)組索引 布爾索引通過(guò)布爾運(yùn)算(如:比較運(yùn)算符)來(lái)獲取符合指定條件的元素的數(shù)組。import numpy as np x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]]) print ('我們的數(shù)組是:') print (x) print ('\n') # 現(xiàn)在我們會(huì)打印出大于 5 的元素 print ('大于 5 的元素是:') print (x[x > 5])我們的數(shù)組是: [[ 0 1 2][ 3 4 5][ 6 7 8][ 9 10 11]]大于 5 的元素是: [ 6 7 8 9 10 11] 布爾索引 花式索引指的是利用整數(shù)數(shù)組進(jìn)行索引。 花式索引根據(jù)索引數(shù)組的值作為目標(biāo)數(shù)組的某個(gè)軸的下標(biāo)來(lái)取值。對(duì)于使用一維整型數(shù)組作為索引,如果目標(biāo)是一維數(shù)組,那么索引的結(jié)果就是對(duì)應(yīng)位置的元素;如果目標(biāo)是二維數(shù)組,那么就是對(duì)應(yīng)下標(biāo)的行。import numpy as np x=np.arange(32).reshape((8,4)) print (x[[4,2,1,7]])[[16 17 18 19][ 8 9 10 11][ 4 5 6 7][28 29 30 31]] 花式索引

六、NumPy 廣播

廣播(Broadcast)是 numpy 對(duì)不同形狀(shape)的數(shù)組進(jìn)行數(shù)值計(jì)算的方式, 對(duì)數(shù)組的算術(shù)運(yùn)算通常在相應(yīng)的元素上進(jìn)行。

廣播的規(guī)則:

  • 讓所有輸入數(shù)組都向其中形狀最長(zhǎng)的數(shù)組看齊,形狀中不足的部分都通過(guò)在前面加 1 補(bǔ)齊。
  • 輸出數(shù)組的形狀是輸入數(shù)組形狀的各個(gè)維度上的最大值。
  • 如果輸入數(shù)組的某個(gè)維度和輸出數(shù)組的對(duì)應(yīng)維度的長(zhǎng)度相同或者其長(zhǎng)度為 1 時(shí),這個(gè)數(shù)組能夠用來(lái)計(jì)算,否則出錯(cuò)。
  • 當(dāng)輸入數(shù)組的某個(gè)維度的長(zhǎng)度為 1 時(shí),沿著此維度運(yùn)算時(shí)都用此維度上的第一組值。

簡(jiǎn)單理解:對(duì)兩個(gè)數(shù)組,分別比較他們的每一個(gè)維度(若其中一個(gè)數(shù)組沒(méi)有當(dāng)前維度則忽略),滿(mǎn)足:

  • 數(shù)組擁有相同形狀。
  • 當(dāng)前維度的值相等。
  • 當(dāng)前維度的值有一個(gè)是 1。

若條件不滿(mǎn)足,拋出?"ValueError: frames are not aligned"?異常。

七、NumPy 迭代數(shù)組

np.nditer(ndarray,order, op_flags, flags)  將ndarray對(duì)象轉(zhuǎn)換為迭代器

c_index 可以跟蹤 C 順序的索引 f_index 可以跟蹤 Fortran 順序的索引 multi-index 每次迭代可以跟蹤一種索引類(lèi)型 external_loop 給出的值是具有多個(gè)值的一維數(shù)組,而不是零維數(shù)組 flags

廣播迭代,如果兩個(gè)數(shù)組是可廣播的,nditer 組合對(duì)象能夠同時(shí)迭代它們。

八、Numpy數(shù)組操作

numpy.reshape(arr, newshape, order='C') arr:要修改形狀的數(shù)組 newshape:整數(shù)或者整數(shù)數(shù)組,新的形狀應(yīng)當(dāng)兼容原有形狀 order:'C' -- 按行,'F' -- 按列,'A' -- 原順序,'k' -- 元素在內(nèi)存中的出現(xiàn)順序。numpy.ndarray.flat 一個(gè)數(shù)組元素迭代器numpy.ndarray.flatten 返回一份數(shù)組拷貝,對(duì)拷貝所做的修改不會(huì)影響原始數(shù)組numpy.ravel 展平的數(shù)組元素,順序通常是"C風(fēng)格",返回的是數(shù)組視圖(view,有點(diǎn)類(lèi)似 C/C++引用reference的意味),修改會(huì)影響原始數(shù)組。 修改數(shù)組形狀 用于對(duì)換數(shù)組的維度 numpy.transpose(arr, axes) arr:要操作的數(shù)組 axes:整數(shù)列表,對(duì)應(yīng)維度,通常所有維度都會(huì)對(duì)換。向后滾動(dòng)特定的軸到一個(gè)特定位置 numpy.rollaxis(arr, axis, start) arr:數(shù)組 axis:要向后滾動(dòng)的軸,其它軸的相對(duì)位置不會(huì)改變 start:默認(rèn)為零,表示完整的滾動(dòng)。會(huì)滾動(dòng)到特定位置。 用于交換數(shù)組的兩個(gè)軸 numpy.swapaxes(arr, axis1, axis2) arr:輸入的數(shù)組 axis1:對(duì)應(yīng)第一個(gè)軸的整數(shù) axis2:對(duì)應(yīng)第二個(gè)軸的整數(shù) 翻轉(zhuǎn)數(shù)組 numpy.broadcast 模仿廣播的對(duì)象,它返回一個(gè)對(duì)象,該對(duì)象封裝了將一個(gè)數(shù)組廣播到另一個(gè)數(shù)組的結(jié)果。numpy.broadcast_to numpy.broadcast_to 函數(shù)將數(shù)組廣播到新形狀。它在原始數(shù)組上返回只讀視圖。 它通常不連續(xù)。 如果新形狀不符合 NumPy 的廣播規(guī)則,該函數(shù)可能會(huì)拋出ValueError。numpy.expand_dims 通過(guò)在指定位置插入新的軸來(lái)擴(kuò)展數(shù)組形狀numpy.squeeze 從給定數(shù)組的形狀中刪除一維的條目 修改數(shù)組維度 用于沿指定軸連接相同形狀的兩個(gè)或多個(gè)數(shù)組 numpy.concatenate((a1, a2, ...), axis) a1, a2, ...:相同類(lèi)型的數(shù)組 axis:沿著它連接數(shù)組的軸,默認(rèn)為 0用于沿新軸連接數(shù)組序列 numpy.stack(arrays, axis) arrays相同形狀的數(shù)組序列 axis:返回?cái)?shù)組中的軸,輸入數(shù)組沿著它來(lái)堆疊numpy.hstack numpy.stack 函數(shù)的變體,它通過(guò)水平堆疊來(lái)生成數(shù)組。 numpy.vstack numpy.stack 函數(shù)的變體,它通過(guò)垂直堆疊來(lái)生成數(shù)組。 連接數(shù)組 沿特定的軸將數(shù)組分割為子數(shù)組 numpy.split(ary, indices_or_sections, axis) ary:被分割的數(shù)組 indices_or_sections:果是一個(gè)整數(shù),就用該數(shù)平均切分,如果是一個(gè)數(shù)組,為沿軸切分的位置(左開(kāi)右閉) axis:沿著哪個(gè)維度進(jìn)行切向,默認(rèn)為0,橫向切分。為1時(shí),縱向切分numpy.hsplit 用于水平分割數(shù)組,通過(guò)指定要返回的相同形狀的數(shù)組數(shù)量來(lái)拆分原數(shù)組。 numpy.vsplit 沿著垂直軸分割,其分割方式與hsplit用法相同。 分割數(shù)組 返回指定大小的新數(shù)組。 numpy.resize(arr, shape) arr:要修改大小的數(shù)組 shape:返回?cái)?shù)組的新形狀函數(shù)在數(shù)組的末尾添加值。 追加操作會(huì)分配整個(gè)數(shù)組,并把原來(lái)的數(shù)組復(fù)制到新數(shù)組中。 此外,輸入數(shù)組的維度必須匹配否則將生成ValueError。 numpy.append(arr, values, axis=None) arr:輸入數(shù)組 values:要向arr添加的值,需要和arr形狀相同(除了要添加的軸) axis:默認(rèn)為 None。當(dāng)axis無(wú)定義時(shí),是橫向加成,返回總是為一維數(shù)組!當(dāng)axis有定義的時(shí)候,分別為0和1的時(shí)候。當(dāng)axis有定義的時(shí)候,分別為0和1的時(shí)候(列數(shù)要相同)。當(dāng)axis為1時(shí),數(shù)組是加在右邊(行數(shù)要相同)。給定索引之前,沿給定軸在輸入數(shù)組中插入值。 numpy.insert(arr, obj, values, axis) arr:輸入數(shù)組 obj:在其之前插入值的索引 values:要插入的值 axis:沿著它插入的軸,如果未提供,則輸入數(shù)組會(huì)被展開(kāi)返回從輸入數(shù)組中刪除指定子數(shù)組的新數(shù)組。 Numpy.delete(arr, obj, axis) arr:輸入數(shù)組 obj:可以被切片,整數(shù)或者整數(shù)數(shù)組,表明要從輸入數(shù)組刪除的子數(shù)組 axis:沿著它刪除給定子數(shù)組的軸,如果未提供,則輸入數(shù)組會(huì)被展開(kāi)用于去除數(shù)組中的重復(fù)元素 numpy.unique(arr, return_index, return_inverse, return_counts) arr:輸入數(shù)組,如果不是一維數(shù)組則會(huì)展開(kāi) return_index:如果為true,返回新列表元素在舊列表中的位置(下標(biāo)),并以列表形式儲(chǔ) return_inverse:如果為true,返回舊列表元素在新列表中的位置(下標(biāo)),并以列表形式儲(chǔ) return_counts:如果為true,返回去重?cái)?shù)組中的元素在原數(shù)組中的出現(xiàn)次數(shù) 數(shù)組元素的添加與刪除

九、Numpy位運(yùn)算

bitwise_and 對(duì)數(shù)組元素執(zhí)行位與操作 bitwise_or 對(duì)數(shù)組元素執(zhí)行位或操作 invert 按位取反 left_shift 向左移動(dòng)二進(jìn)制表示的位 right_shift 向右移動(dòng)二進(jìn)制表示的位

十、Numpy字符串處理

與python str類(lèi)型類(lèi)似

add() 對(duì)兩個(gè)數(shù)組的逐個(gè)字符串元素進(jìn)行連接 multiply() 返回按元素多重連接后的字符串 center() 居中字符串 capitalize() 將字符串第一個(gè)字母轉(zhuǎn)換為大寫(xiě) title() 將字符串的每個(gè)單詞的第一個(gè)字母轉(zhuǎn)換為大寫(xiě) lower() 數(shù)組元素轉(zhuǎn)換為小寫(xiě) upper() 數(shù)組元素轉(zhuǎn)換為大寫(xiě) split() 指定分隔符對(duì)字符串進(jìn)行分割,并返回?cái)?shù)組列表 splitlines() 返回元素中的行列表,以換行符分割 strip() 移除元素開(kāi)頭或者結(jié)尾處的特定字符 join() 通過(guò)指定分隔符來(lái)連接數(shù)組中的元素 replace() 使用新字符串替換字符串中的所有子字符串 decode() 數(shù)組元素依次調(diào)用str.decode encode() 數(shù)組元素依次調(diào)用str.encode

十一、Numpy計(jì)算類(lèi)函數(shù)

數(shù)學(xué)函數(shù):

NumPy 提供了標(biāo)準(zhǔn)的三角函數(shù):sin()、cos()、tan()。

可以通過(guò) numpy.degrees() 函數(shù)將弧度轉(zhuǎn)換為角度。

numpy.around() 函數(shù)返回指定數(shù)字的四舍五入值。

numpy.floor() 返回?cái)?shù)字的下舍整數(shù)。

numpy.ceil() 返回?cái)?shù)字的上入整數(shù)。

算數(shù)函數(shù):

NumPy 算術(shù)函數(shù)包含簡(jiǎn)單的加減乘除:?add(),subtract(),multiply()?和?divide()。

numpy.reciprocal() 函數(shù)返回參數(shù)逐元素的倒數(shù)。

numpy.power() 函數(shù)將第一個(gè)輸入數(shù)組中的元素作為底數(shù),計(jì)算它與第二個(gè)輸入數(shù)組中相應(yīng)元素的冪。

numpy.mod() 計(jì)算輸入數(shù)組中相應(yīng)元素的相除后的余數(shù)。 函數(shù) numpy.remainder() 也產(chǎn)生相同的結(jié)果。

統(tǒng)計(jì)函數(shù):

numpy.amin() 用于計(jì)算數(shù)組中的元素沿指定軸的最小值。

numpy.amax() 用于計(jì)算數(shù)組中的元素沿指定軸的最大值。

numpy.ptp() 函數(shù)計(jì)算數(shù)組中元素最大值與最小值的差(最大值 - 最小值)。

numpy.percentile() 百分位數(shù)是統(tǒng)計(jì)中使用的度量,表示小于這個(gè)值的觀(guān)察值的百分比。

numpy.percentile(a, q, axis) a: 輸入數(shù)組 q: 要計(jì)算的百分位數(shù),在 0 ~ 100 之間 axis: 沿著它計(jì)算百分位數(shù)的軸 第 p 個(gè)百分位數(shù)是這樣一個(gè)值,它使得至少有 p% 的數(shù)據(jù)項(xiàng)小于或等于這個(gè)值,且至少有 (100-p)% 的數(shù)據(jù)項(xiàng)大于或等于這個(gè)值。import numpy as np a = np.array([[10, 7, 4], [3, 2, 1]]) print ('我們的數(shù)組是:') print (a)print ('調(diào)用 percentile() 函數(shù):') # 50% 的分位數(shù),就是 a 里排序之后的中位數(shù) print (np.percentile(a, 50)) # axis 為 0,在縱列上求 print (np.percentile(a, 50, axis=0)) # axis 為 1,在橫行上求 print (np.percentile(a, 50, axis=1)) # 保持維度不變 print (np.percentile(a, 50, axis=1, keepdims=True))我們的數(shù)組是: [[10 7 4][ 3 2 1]] 調(diào)用 percentile() 函數(shù): 3.5 [6.5 4.5 2.5] [7. 2.] [[7.][2.]] numpy.percentile()

numpy.median() 函數(shù)用于計(jì)算數(shù)組 a 中元素的中位數(shù)(中值)

numpy.mean() 函數(shù)返回?cái)?shù)組中元素的算術(shù)平均值。

numpy.average() 函數(shù)根據(jù)在另一個(gè)數(shù)組中給出的各自的權(quán)重計(jì)算數(shù)組中元素的加權(quán)平均值。

np.std() 標(biāo)準(zhǔn)差是一組數(shù)據(jù)平均值分散程度的一種度量。

np.var() 方差

十二、Numpy排序與條件篩選

numpy.sort(a, axis, kind, order) a: 要排序的數(shù)組 axis: 沿著它排序數(shù)組的軸,如果沒(méi)有數(shù)組會(huì)被展開(kāi),沿著最后的軸排序, axis=0 按列排序,axis=1 按行排序 kind: 默認(rèn)為'quicksort'(快速排序) order: 如果數(shù)組包含字段,則是要排序的字段numpy.argsort() 函數(shù)返回的是數(shù)組值從小到大的索引值。numpy.lexsort() 用于對(duì)多個(gè)序列進(jìn)行排序。把它想象成對(duì)電子表格進(jìn)行排序,每一列代表一個(gè)序列,排序時(shí)優(yōu)先照顧靠后的列。msort(a) 數(shù)組按第一個(gè)軸排序,返回排序后的數(shù)組副本。np.msort(a) 相等于 np.sort(a, axis=0)。 sort_complex(a) 對(duì)復(fù)數(shù)按照先實(shí)部后虛部的順序進(jìn)行排序。 partition(a, kth[, axis, kind, order]) 指定一個(gè)數(shù),對(duì)數(shù)組進(jìn)行分區(qū) argpartition(a, kth[, axis, kind, order]) 可以通過(guò)關(guān)鍵字 kind 指定算法沿著指定軸對(duì)數(shù)組進(jìn)行分區(qū)numpy.argmax() 和 numpy.argmin()函數(shù)分別沿給定軸返回最大和最小元素的索引。numpy.nonzero() 函數(shù)返回輸入數(shù)組中非零元素的索引。numpy.where() 函數(shù)返回輸入數(shù)組中滿(mǎn)足給定條件的元素的索引。numpy.extract() 函數(shù)根據(jù)某個(gè)條件從數(shù)組中抽取元素,返回滿(mǎn)條件的元素。

十三、Numpy字節(jié)交換

在幾乎所有的機(jī)器上,多字節(jié)對(duì)象都被存儲(chǔ)為連續(xù)的字節(jié)序列。字節(jié)順序,是跨越多字節(jié)的程序?qū)ο蟮拇鎯?chǔ)規(guī)則。

  • 大端模式:指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的低地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的高地址中,這樣的存儲(chǔ)模式有點(diǎn)兒類(lèi)似于把數(shù)據(jù)當(dāng)作字符串順序處理:地址由小向大增加,而數(shù)據(jù)從高位往低位放;這和我們的閱讀習(xí)慣一致。

  • 小端模式:指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的高地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址中,這種存儲(chǔ)模式將地址的高低和數(shù)據(jù)位權(quán)有效地結(jié)合起來(lái),高地址部分權(quán)值高,低地址部分權(quán)值低。

例如在 C 語(yǔ)言中,一個(gè)類(lèi)型為 int 的變量 x 地址為 0x100,那么其對(duì)應(yīng)地址表達(dá)式&x的值為 0x100。且x的四個(gè)字節(jié)將被存儲(chǔ)在存儲(chǔ)器的 0x100, 0x101, 0x102, 0x103位置。

numpy.ndarray.byteswap() 函數(shù)將 ndarray 中每個(gè)元素中的字節(jié)進(jìn)行大小端轉(zhuǎn)換。

十四、副本與視圖

副本是一個(gè)數(shù)據(jù)的完整的拷貝,如果我們對(duì)副本進(jìn)行修改,它不會(huì)影響到原始數(shù)據(jù),物理內(nèi)存不在同一位置。

視圖是數(shù)據(jù)的一個(gè)別稱(chēng)或引用,通過(guò)該別稱(chēng)或引用亦便可訪(fǎng)問(wèn)、操作原有數(shù)據(jù),但原有數(shù)據(jù)不會(huì)產(chǎn)生拷貝。如果我們對(duì)視圖進(jìn)行修改,它會(huì)影響到原始數(shù)據(jù),物理內(nèi)存在同一位置。

視圖一般發(fā)生在:

  • 1、numpy 的切片操作返回原數(shù)據(jù)的視圖。
  • 2、調(diào)用 ndarray 的 view() 函數(shù)產(chǎn)生一個(gè)視圖。

副本一般發(fā)生在:

  • Python 序列的切片操作,調(diào)用deepCopy()函數(shù)。
  • 調(diào)用 ndarray 的 copy() 函數(shù)產(chǎn)生一個(gè)副本。

十五、Numpy矩陣

函數(shù)返回一個(gè)新的矩陣 numpy.matlib.empty(shape, dtype, order) shape: 定義新矩陣形狀的整數(shù)或整數(shù)元組 Dtype: 可選,數(shù)據(jù)類(lèi)型 order: C(行序優(yōu)先) 或者 F(列序優(yōu)先)numpy.matlib.zeros() 函數(shù)創(chuàng)建一個(gè)以 0 填充的矩陣。numpy.matlib.ones()函數(shù)創(chuàng)建一個(gè)以 1 填充的矩陣。函數(shù)返回一個(gè)矩陣,對(duì)角線(xiàn)元素為 1,其他位置為零。 numpy.matlib.eye(n, M,k, dtype) n: 返回矩陣的行數(shù) M: 返回矩陣的列數(shù),默認(rèn)為 n k: 對(duì)角線(xiàn)的索引 dtype: 數(shù)據(jù)類(lèi)型 numpy.matlib.identity() 函數(shù)返回給定大小的單位矩陣。numpy.matlib.rand() 函數(shù)創(chuàng)建一個(gè)給定大小的矩陣,數(shù)據(jù)是隨機(jī)填充的。

十六、Numpy線(xiàn)性代數(shù)

對(duì)于兩個(gè)一維的數(shù)組,計(jì)算的是這兩個(gè)數(shù)組對(duì)應(yīng)下標(biāo)元素的乘積和(數(shù)學(xué)上稱(chēng)之為內(nèi)積);對(duì)于二維數(shù)組,計(jì)算的是兩個(gè)數(shù)組的矩陣乘積;對(duì)于多維數(shù)組,它的通用計(jì)算公式如下,即結(jié)果數(shù)組中的每個(gè)元素都是:數(shù)組a的最后一維上的所有元素與數(shù)組b的倒數(shù)第二位上的所有元素的乘積和: dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])。 numpy.dot(a, b, out=None) a : ndarray 數(shù)組 b : ndarray 數(shù)組 out : ndarray, 可選,用來(lái)保存dot()的計(jì)算結(jié)果numpy.vdot() 函數(shù)是兩個(gè)向量的點(diǎn)積。 如果第一個(gè)參數(shù)是復(fù)數(shù),那么它的共軛復(fù)數(shù)會(huì)用于計(jì)算。numpy.inner() 函數(shù)返回一維數(shù)組的向量?jī)?nèi)積。對(duì)于更高的維度,它返回最后一個(gè)軸上的和的乘積。numpy.matmul 函數(shù)返回兩個(gè)數(shù)組的矩陣乘積。 雖然它返回二維數(shù)組的正常乘積,但如果任一參數(shù)的維數(shù)大于2,則將其視為存在于最后兩個(gè)索引的矩陣的棧,并進(jìn)行相應(yīng)廣播。numpy.linalg.det() 函數(shù)計(jì)算輸入矩陣的行列式。numpy.linalg.solve() 函數(shù)給出了矩陣形式的線(xiàn)性方程的解。numpy.linalg.inv() 函數(shù)計(jì)算矩陣的乘法逆矩陣。

?

轉(zhuǎn)載于:https://www.cnblogs.com/lpapython/p/10885201.html

總結(jié)

以上是生活随笔為你收集整理的数据分析之numpy的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。