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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python多维数据分析_Python 数据分析:numpy 多维数组 ndarray

發布時間:2024/9/3 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python多维数据分析_Python 数据分析:numpy 多维数组 ndarray 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面的文章中,將使用約定俗成的模塊名 np 來表示 NumPy 庫。

1. 多維數組的創建

NumPy 提供了許多常用的函數來創建多維數組,先概覽這些函數的名稱及功能。

函數

說明

array

將輸入數據轉換為ndarray,可顯式指定dtype。

asarray

將輸入轉換為ndarray,如果輸入本身為ndarray則不復制。

arange

類似于range函數,返回的是ndarray而不是列表。

ones、ones_like

根據指定的形狀和dtype創建一個全1數組。ones_like以另一個數組為參數,并根據其形狀和dtype創建一個全1數組。

zeros、zeros_like

類似于ones和ones_like,只不過產生的是全0數組。

empty、empty_like

創建新數組,只分配內存但不填充任何值。

eye、identity

創建一個N*N單位矩陣(對角線為1,其余為0)。

array

語法:

示例:

array 接受一切序列型對象,返回一個 NumPy 數組(ndarray)。如果我們沒有指定元素的數據類型,那么 array 會自動為數組選擇一個合適的數據類型,保存到 dtype 對象中。

2. dtype數據類型

類型

類型代碼

說明

int8

i1、u1

8位整型

int16

i2、u2

16位整型

int32

i4、u4

32位整型

int64

i8、u8

64位整型

float16

f2

半精度浮點數

float32

f4或f

標準單精度浮點數。與C的float兼容。

float64

f8或d

標準雙精度浮點數,與C的double和Python的float對象兼容。

float128

f16或g

擴展精度浮點數

complex64、complex128、complex256

c32

復數

bool

?

布爾類型(True或False)

object

O

Python對象類型

string

S

定長字符串類型(每字符1字節)。

unicode

U

定長unicode類型(字節數由平臺決定)。跟字符串的定義方式一樣。

創建 ndarray 對象時,可以使用類型代碼來表示 dtype

ndarray 對象提供了 astype 方法來轉換其 dtype

3. 基本索引

與python內置的list類似,ndarray 對象也可以通過方括號來索引元素。例如:

不同之處在于,list的切片返回的是新對象,而 ndarray 切片后將返回原始數據的視圖。也就是說,對于切片的任何修改都會反映在源數組上。例如:

要得到一個新的對象,可以通過 arr[3:8].copy() 來獲得副本。

4. 高維度索引

Python 自身可以通過連續的方括號組合來索引多維數組,例如 arr[1][3] 。在 NumPy 中, ndarray 同樣支持這種基本的索引方式。除此之外,ndarray 還支持另一種索引方式:

通過逗號來分隔不同維度的索引,即獲取二維數組 arr 中第一行第三列的元素。

基于此,我們可以在各維度中分別進行切片索引:

這表示,獲取由二維數組的2、3、4行第0、1、2列元素所構成的3x3二維數組。

5. 布爾型索引

布爾型索引,就是用一個形狀與目標數組一模一樣的布爾型數組,來索引目標數組對應位置的元素。布爾型數組元素的值只有True和False兩種,True對應的目標數組元素將被選取,而False對應的元素將被忽略。

例如:

多維數組與常量的比較運算會廣播到每一個元素,也就是說,每個元素都會與該常量進行比較運算。我們可以利用這一點來生成布爾型索引數組:

常用的比較運算符有:==, !=, >, =, <=

還可以使用波浪號 ~ 對布爾型數組取反,相當于對每個元素取反。

如果有多個條件,可以使用 & 和 | 運算符進行與運算和或運算。

6. 花式索引

花式索引(Fancy indexing)指的是利用整數數組進行索引。花式索引總是產生新的數組對象。

花式索引通過傳入列表或數組,從而以特定順序選取行子集。例如:

如果要讓選定行子集的列,按指定順序排列,可以寫成:

上面代碼中,前部分 arr[[3, 2, 0]] 實際上就是上一個示例的結果。我們就是在上一個結果的基礎上進行索引,[:, [1, 2, 3, 0]],冒號表示選取所有行,而后面的列表指定了列的排列順序。

7. 索引總結

普通高維度索引、布爾型索引與花式索引這三者之間其實有規律可循。

我們以二維數組 arr2d 為例。

7.1. 形式一

第一種索引的形式為 arr2d[i]。由于 i 只是單個序列,只會篩選行子集,因此索引的結果包含所有列。

當 i 為單個數值時,結果是對應的行視圖

當 i 為 a:b 的形式時,結果是第 a 行到第 b-1 行的 b-a 個行子集視圖;

當 i 為列表或數組時:

如果 i 為形狀與 arr2d 相同的布爾型數組,則結果為 True 所對應的元素構成的新子集(布爾型索引);

如果元素為數值,結果是原數組對應行按列表或數組指定順序排列形成的新子集(花式索引);

如果元素為布爾值,結果是 True 所對應的行構成的新子集。

7.2. 形式二

第二種索引的形式為 arr2d[i, j]。由于 i,j 包含了每一個維度(此處為2),因此將對行和列進行篩選。

當 i、j 為數值時,結果是單個元素視圖;

當 i、j 均為 a:b 的形式時,結果是 i 篩選出的行子集與 j 篩選出的列子集的公共部分視圖;

當 i、j 均為列表時:

如果元素為數值,結果等價于 zip(i, j) 中每個坐標所代表的元素構成的新子集;

如果元素為布爾值,結果等價于 zip(i, j) 中兩個坐標值均為 True 的位置所對應的元素構成的新子集。

8. 轉置和軸對換

在前面的示例中,我們使用了 reshape() 方法來重塑數組。

此外,多維數組還有 transpose 方法,用于指定軸的轉置,返回源數據的視圖。

以及 T 屬性,返回轉置(軸對換)后的數組,T 屬性本身不可修改,但若賦值給別的變量,則會生成新的數組,可進行修改。

多維數組還有一個 swapaxes 方法,用于對換兩個軸,返回源數據的視圖。

9. 元素級數組函數

我們將用于多維數組中元素級運算的函數成為通用函數(ufunc),它們作用于每一個元素,接收一個或多個標量值,并產生一個或多個標量值。

9.1. 一元ufunc

函數

說明

abs、fabs

計算整數、浮點數或復數的絕對值。對于非復數值,可以使用更快的fabs

sqrt

計算平方根。相當于 arr ** 0.5

square

計算平方。相當于 arr ** 2

exp

計算指數 e^x

log、log10、log2、log1p

底數為e、10、2的對數及log(1+x)

sign

計算正負號:1(正數)、0(零)、-1(負數)

ceil

向上取整

floor

向下取整

rint

四舍五入到最接近的整數,保留dtype

modf

將數組的小數和整數部分以兩個獨立數組的形式返回

isnan

返回一個表示“哪些值是NaN(不是數字)”的布爾型數組

isfinite、isinf

分別返回一個表示“哪些元素是有窮的”或“哪些元素是無窮的”的布爾型數組

cos、cosh、sin、sinh、tan、tanh

普通型和雙曲型三角函數

arccos、arccosh、arcsin、arcsinh、arctan、arctanh

反三角函數

logical_not

計算各元素 not x 的真值。相當于 ~arr

9.2. 二元ufunc

函數

說明

add

元素相加

subtract

第一個數組元素減去第二個數組元素

multiply

元素相乘

divide、floor_divide

除法或向下圓整除法(丟棄余數)

power

對第一個數組中的元素A,根據第二個數組中的相應元素B,計算A^B

maximum、fmax

元素級的最大值計算。fmax將忽略NaN

minimum、fmin

元素級的最小值計算。fmin將忽略NaN

mod

元素級的求模計算(除法的余數)

copysign

將第二個數組中的值的符號復制給第一個數組中的值

greater、greater_equal、less、less_equal

執行元素級的比較運算,最終產生布爾型數組。相當于中綴運算符 >, >=,

logical_and、logical_or

執行元素級的真值邏輯運算。相當于中綴運算符 & | ^

10. 視圖、副本總結

返回源數據視圖:

arr[:3](基本索引)

arr[2:5, :3](高維度索引)

返回新數組:

arr.astype('f8')(類型轉換)

arr[:3].copy()(生成副本)

arr[bools](布爾型索引)

arr[[3, 2, 0]](花式索引)

參考文獻

《利用Python進行數據分析》

總結

以上是生活随笔為你收集整理的python多维数据分析_Python 数据分析:numpy 多维数组 ndarray的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。