1.
(1)資料分析:是把隐藏在一些看似雜亂無章的資料背後的資訊提煉出來,總結出所研究對象的内在規律
(2)資料分析三劍客:Numpy,Pandas,Matplotlib
(3)NumPy(Numerical Python) 是 Python 語言的一個擴充程式庫,支援大量的次元數組與矩陣運算,此外也針對數組運算
提供大量的數學函數庫
numpy中seriel,dataframe重點
matplotlib:直方圖和散點圖等等其他圖
前兩個是資料分析相關的,後邊的這個是繪圖相關的
一、建立ndarray
2. 使用np.array()建立
例1:一維數組建立
import numpy as np
np.array([1,2,3,4,5])
結果:
array([1, 2, 3, 4, 5])
例2:二維資料建立
np.array([[1,2,3.2],[4,5,6]])
結果:
array([[ 1. , 2. , 3.2],
[ 4. , 5. , 6. ]])
注意:
numpy預設ndarray的所有元素的類型是相同的
如果傳進來的清單中包含不同的類型,則統一為同一類型,優先級:str>float>int
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICN4ETMfdHLkVGepZ2XtxSZ6l2clJ3LcBnYldHL0FWby9mZvwVPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsAjMfd3bkFGazxCMx8VesATMfhHLlN3XnxCMz8FdsYkRGZkRG9lcvx2bjxSa2EWNhJTW1AlUxEFeVRUUfRHelRHL2EzXlpXazxyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcuQDN5ITO4QTN5ETOiFzNzYzX3EjM0ETM0EzLcFTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
例3:使用matplotlib.pyplot擷取一個numpy數組,資料來源于一張圖檔
import matplotlib.pyplot as plt
plt.imread('./cat.jpg')
運作之後,傳回的是一個三維數組,外邊有三層包裹
結果:
例4:
import matplotlib.pyplot as plt
#cat_img_arr = plt.imread('./cat.jpg')
cat_img_arr = plt.imread('cat.jpg')
plt.imshow(cat_img_arr)
運作之後,得到的結果:
例5:
import matplotlib.pyplot as plt
#cat_img_arr = plt.imread('./cat.jpg')
cat_img_arr = plt.imread('cat.jpg')
plt.imshow(cat_img_arr)
plt.imshow(cat_img_arr-50)
運作之後,得到下面的結果:減去50之後的結果
例6:
import matplotlib.pyplot as plt
#cat_img_arr = plt.imread('./cat.jpg')
cat_img_arr = plt.imread('cat.jpg')
plt.imshow(cat_img_arr)
plt.imshow(cat_img_arr-50)
cat_img_arr
運作結果:
列印出了這個數組
例7:
import matplotlib.pyplot as plt
#cat_img_arr = plt.imread('./cat.jpg')
cat_img_arr = plt.imread('cat.jpg')
plt.imshow(cat_img_arr)
plt.imshow(cat_img_arr-50)
cat_img_arr.shape #數組的形狀應該得到的是下面的數組(456,730,3)
展示元組:也就是數組的形狀
前兩個表示像素,第三個表示顔色
結果:
2. 使用np的routines函數建立
(1)包含以下常見建立方法:
例1:
例2:
例3:等差數列
用法:
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
傳回20個元素:
例4:
例5:
固定随機數,5行6列,随機因子
#固定時間種子,産生的随機數就固定下來了
例6:标準正态分布
例7:生成0-1的随機數
三.ndarray的屬性
例1:
得到下面的結果:
核心重點:索引和切片的處理
123
四.ndarray的基本操作
1. 索引¶
一維與清單完全一緻 多元時同理
例1:索引查找結果,修改結果
例2:索引:一維與清單完全一緻 多元時同理
(1)擷取二維數組前兩行,顧頭不顧尾
(2)擷取二維數組前兩列資料,逗号左邊是行資料,逗号右邊是列資料
(3)擷取資料前兩行和前兩列資料
(4)将資料反轉,例如[1,2,3]==>[3,2,1]
::進行切片
(5)列倒序
(6)全部倒序
arr[::-1,::-1]
例3:
(1)如何将圖檔進行全置倒序處理之後,需要儲存一下
帶顔色的圖檔是三維的,檢視一下形狀
(3)下面是上下倒置的結果:
(4)下面是左右倒置的結果
(5)下面是顔色倒置的結果:
例4:變形
使用arr.reshape()函數,注意參數是一個tuple!
基本使用
1.将一維數組變形成多元數組
将上邊的array轉換成 一維的,7行5列,再轉換成5行7列的
擴充:轉化成三維的
例5:圖檔倒置
#對一維數組中所有的元素倒置
例5;級聯(numpy中了解成合并就行),
panda中不能這麼了解
(1)axis表示的是軸向的意思
axis=0:軸向 0表示的是豎直的軸向 1水準的軸向
看一下arr的形狀
concatentate必須對齊才行,否則會報錯
注意上圖,隻有二維和二維的才能合并,行和列一定要對齊才行
例6:
(1)合并兩張圖檔
axis=1表示左右,豎向連接配接,axis=0表示上下,橫向連接配接
(2)水準級聯hstack和豎直級聯vstack
例7. 切分:
下面我們看下是如何切分的?
(1)
(2)下面是切分之後的結果
axis==>表示的是橫着切
下邊表示的是豎着切
(3)
切分照片?
(4)
聚合操作:
(1)
(2)np.max/np.min
對所有的求和
求方差
可以指定軸向,将三維數組中每個軸向的第三個數組進行求方差
廣播機制:
(1)
通過廣播機制進行相加
(2)
缺失的資料通過已有的資料進行填充
(3)
缺失的次元會自動補齊這個數值
ndarry的排序
(1)快速排序
第一個不改變輸入,第二個改變輸入,第一種是升序
下邊的第一種也是不改變
139得到的結果是:
array([3,5,6,7,8])