?一.numpy是什么 ?
Numpy 是 Python 中專門用于高性能數值計算的庫,其核心是一個功能強大的 n 維數組對象(ndarray),可以用來存儲和操作大規模的數字矩陣或張量數據。
numpy庫的作用:
核心功能:實現矩陣運算,為人工智能和數據分析提供基礎支持
應用場景:
人工智能領域(包括計算機視覺、自然語言處理等)
數據分析崗位(從海量數據中挖掘有效規律)
金融行業(量化交易、投行分析等)
數據分析與人工智能的關系?
包含關系:數據分析屬于人工智能崗位的組成部分
數據特征:
需要處理的數據量級通常在幾十萬到上百萬條
少量數據(如10-20條)不需要專門的分析工具
Numpy提高運行速度的優勢:底層架構:核心計算部分用C語言實現python層僅負責調用接口
速度對比:比純Python列表運算快數十倍執行效率超過Excel的數據處理
numpy底層與C語言的關系 :
技術架構:底層:C語言實現高性能計算上層:Python提供易用接口
設計優勢:兼顧開發效率(Python)和運行效率(C),避免直接編寫復雜的C代碼
二.numpy庫的安裝
1.精確安裝命令: 使用pip install numpy==1.23.5指定版本安裝,雙等號表示嚴格版本匹配
2.鏡像加速: 安裝時可添加國內鏡像地址提高下載速度(如清華源、阿里云源等)
3.安裝問題解決方法
- 錯誤處理:
- 當指定版本不存在時,pip會列出所有可用版本
- 可根據Python版本選擇兼容的次新版本(如1.26.x不可用時選擇1.25.x)
- 版本選擇原則:
- Python 3.7建議安裝1.21.x版本
- Python 3.8+可安裝1.22+版本
- 主版本號(第一個數字)應保持一致
三.?Nunpy函數詳解
導入慣例: 使用import numpy as np作為標準導入方式
1.一維數組:
import numpy as np
list1 = [1,2,3,4,5] #python自帶的列表數據類型
print(list1) #[1,2,3,4,5]
v = np.array(list1)
print(v) #[1 2 3 4 5]
?2.二維數組[多個一維數組構成]
import numpy as np
list1 = [1,2,3,4,5]
m = np.array([list1,list1,list1])
print(m)
##[[1 2 3 4 5]
# [1 2 3 4 5]
#[1 2 3 4 5]]
3.三維數組[多個二維數組構成]
import numpy as np
list1 = [1,2,3,4,5]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z)
可視化特性:在調試模式下查看ndarray對象時,數值越大顯示顏色越紅,越小則顏色越深,便于快速識別極值。
由于三維數組無法直接在計算機上表示,所以以z[0]的形式展現。
z[0]訪問第一個二維矩陣切片,以此類推實現不同維度的數據提取,z[1]訪問第二個二維矩陣切片
?4.數組的基本屬性
1.shape 查詢數組的形狀
import numpy as np
list1 = [1,2,3,4,5]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z.shape)#(3, 3, 5)
輸出結果(3,3,5)表示:3個二維矩陣,每個二維矩陣有3行,每行有5個元素
2.ndim ?查詢數組的維度
import numpy as np
list1 = [1,2,3,4,5]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z.ndim)#3
3.size ?查詢數組中數據個數
import numpy as np
list1 = [1,2,3,4,5]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z.size)#45
4.dtype 查詢數組中的元素類型
import numpy as np
list1 = [1,2,3,4,5]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z.dtype)#int32
?int8, int16, int32, int64: 表示不同長度的有符號整數。默認為int32
int8 的最小值為 0(二進制全為 0),最大值為 256(二進制全為 1),實際存儲范圍為 0 到 255。自然界中的亮度值(如 RGB 顏色)范圍是 0 到 255,因此計算機視覺中常用 int8 存儲顏色值。
int32 的存儲范圍為 0 到 232,適用于大數值存儲;float32 和 float64 用于高精度浮點數(如保留多位小數)。
四.數組的升維
a.reshape(newshape, order='C')
?a:要重新形狀的數組。
newshape:一個整數或者元組,用于定義新的形狀。
order:可選參數,指定元素在數組中的讀取順序。'C'意味著按行,'F'意味著按列,'A'意味著原順序,'K'意味著元素在內存中的出現順序。
import numpy as np
list1 = [1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8]#
v = np.array(list1)
r1 = v.reshape(4,4)
print(r1)
print(r1.ndim)
r2 = v.reshape(1,-1,2)
print(r2)
print(r2.ndim)
r3 = r1.reshape(2,2,4)
print(r3)
print(r3.ndim)
resize:調整矩陣大小,可直接修改原始數據到相應的維度,返回值 None。reshape()方法則返回的是修改后的矩陣而原來的矩陣并不會改變
不返回計算結果,直接修改原始數組
import numpy as np
list1=[1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4]
v=np.array(list1)
r = v.resize(4,4)#直接會修改原始數據到相應的維度
print(r)#None
print(v)#[[1 2 3 4]# [1 2 3 4]#[1 2 3 4]#[1 2 3 4]]
print(v.ndim)#2