資料分析 numpy

2022-08-23 00:30:12 字數 4411 閱讀 6850

主要內容:

1 資料分析

a 概念:  是把隱藏在一些看似雜亂無章的資料背後資訊提煉出來,總結出所研究物件的內在規律.

b 三劍客: numpy  pandas  matplotlib

2 numpy 是python語言的乙個擴充套件程式庫, 支援大量的緯度陣列與矩陣運算,此外也針對陣列運算提供大量的數字函式庫.

a ndarray的概念:  ndarray 是乙個多維的陣列物件,具有向量算術運算能力和複雜的廣播能力,並具有執行速度快和節省空間的特點。

b  ndarray的建立:

1) 使用np.array()建立: 最簡單的方法是使用 numpy 提供的 array() 函式直接將 python 陣列轉換為 ndarray 陣列,array() 接受一切序列型別的物件,例如將乙個列表轉換成 ndarray 陣列.

import numpy as np

#一維陣列的建立

np.array([1,2,3,4,5])

# 二維陣列的建立

np.array([[1,2,3], [3, 4, 5]])

np.array([[1, 2, 3], ['a', 4, 5]])

#注意: 1 numpy預設ndarray的所有元素的型別是相同的

# 2 如果傳過來的列表包含不同的型別,則統一為

# 統一型別,優先順序: str > float > int

3) 使用np.ones方法建立  :np.ones(shape, dtype=none, order='c')

np.ones(shape=(20, 30))

4)  使用np.full方法建立:   np.full(shape, fill_value, dtype=none, order='c')

np.full(shape=(5,6), fill_value=100)

5)  使用np.linspace方法建立: np.linspace(start, stop, num=50, endpoint=true, retstep=false,dtype=none)等差數列

np.linspace(1, 100, num=20)

6)  使用np.arange方法建立: np.arange([start, ]stop, [step, ]dtype=none)

np.arange(0,100, step=2)

7) 使用np.random.randint(low, high=none, size=none, dtype='i')

np.random.seed(14)  #固定時間種子,產生的隨機數就固定下來了

np.random.randint(0,100,size=(5,7))

8)  使用np.random.randn(d0,d1,d2....dn) 標準正態分佈

arr = np.random.randn(4,4)

9)  使用np.random.random(size=none) 生成0到1的隨機數, 左閉右開

np.random.random(size=(3, 4))

c : ndarray屬性

1)  4個必記的引數:  ndim  維度;  shape  形狀 ; size  總長度  ; dtype 元素型別

d : ndarray基本操作

1) 索引:  一維與列表完全一致,多維時同理

2) 切片: 一維與列表完全一致,多維時同理

# 左邊是行,右邊是列

arr = np.random.randint(60,120,size=(6,4))

# 獲取前兩行的資料

# arr[0:2]

# 獲取二維陣列的前2列

# arr[:, 0:2]

# 獲取前兩行和前兩列的資料

# arr[0:2,0:2]

# 將資料反轉 ::進行切片

# 將陣列的行倒序

# arr[::-1]

# 將陣列的列倒序

# arr[:, ::-1]

# 全部倒序

arr[::-1, ::-1]

3) 變形 : 使用arr.reshape()函式, 注意引數是乙個tuple!基本使用: 

將一維陣列轉變為多維陣列

arr2 = np.random.randint(20,30, size=(6,4))

arr2

# 轉變為一維陣列

arr12 = arr2.reshape(24)

arr12

# 轉變成三維陣列

arr32 = arr2.reshape(2,4,3)

arr32

# 自動計算行和列

arr4 = arr2.reshape(3,-1)

arr4

arr5 = arr2.reshape(-1,6)

arr5

4) 級聯   一維陣列 二維陣列  多維陣列的級聯, 實際操作中級聯多為二維陣列

np.concatenate()  axis=0表示的是豎直方向  1水平方向

arr1 = np.random.randint(0,100, size=(3,4))

arr2 = np.random.randint(0,100, size=(3,4))

np.concatenate((arr1,arr2), axis=1) 水平方向

np.concatenate((arr1,arr2), axis=0) 豎直方向

5)  切分: 與級聯類似, 三個函式完成切分工作: np.split(arr,行/列,軸): 引數2是乙個列表型別 np.vsplit np.hsplit

6)  副本:  所有賦值操作不會為ndarray的任何元素建立副本, 對賦值後的物件的操作也會對原來的物件生效.

可使用copy建立副本.

arr = np.array([1,2,3,4,5])

a = arr

a[1] = 10

print(arr)

arr1 = arr.copy()

arr1[0] = 20

e : ndarray的聚合操作

arr.sum()

arr.std()

arr.mean()

f: 廣播機制

ndarray廣播機制的三條規則:

缺失維度的陣列, 則維度補充為進行運算的陣列的維度.缺失的陣列元素使用已有元素進行補充.

規則一:  為缺失的維度補1

規則二: 缺失元素用已用值補充

規則三: 缺失維度的陣列只能有一行或者是一列

例一: m = np.ones((2,3)) a = np.arange(3) 求m + a

# 兩行三列的矩陣1

m = np.ones((2,3))

# 一維陣列0,1,2

a = np.arange(3)

m+aa = np.arange(3).reshape(3,1)

b = np.arange(3)

a+b習題3 : a = np.ones((4,1)) b = np.arange(4) 求a+b

a = np.ones((4,1))

b = np.arange(4)

a+b

h : ndarray排序

# 1  快速排序np.sort()與ndarray.sort()都可以, 但有區別:

# np.sort()不改變輸入

# ndarray.sort()本地處理, 不占用空間, 但改變輸入.

arr = np.array([3,8,5,7,6])

arr# 排序

np.sort(arr)

部分排序

2 部分排序 np.partition(a,k) 有的時候我們不會對全部的資料感興趣, 我們可能對最小的或者最大的一部分感興趣. 當k為正時, 我們想得到最小的k個數 當k為負時, 我們想得到最大的k個數

arr = np.array([1,2,3,4,5])

np.partition(arr, kth=4)

numpy資料分析

2020 11 2 import array arr array.array i list range 10 i表示整型,生成序列後不能改變資料型別 多維陣列ndarray方便處理多維度運算,運算效率高 nparr np.array list range 10 修改值,浮點數取整數段 nparr 2...

資料分析 Numpy

什麼是numpy numpy這個詞 於兩個單詞 numerical和python。numpy是python中的乙個運算速度非常快的乙個數學庫,它非常重視陣列,很多的資料科學的包都是依賴於numpy的。它允許你在python中進行向量和矩陣計算,並且由於許多底層函式實際上是用c編寫的,因此你可以體驗在...

爬蟲 資料分析 numpy

資料分析 是把隱藏在一些看似雜亂無章的資料背後的資訊提煉出來,總結出所研究物件的內在規律 資料分析三劍客 numpy,pandas,matplotlib numpy numerical python 是 python 語言的乙個擴充套件程式庫,支援大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量...