numpy庫是python的一種開源的數字拓展,可以用來儲存和處理大型矩陣
1. 優點
① 多維陣列ndarray,元素級計算,運算快;
② 資料讀寫方便;
2. 特點
① 陣列定義的時候大小固定;
② 儲存元素為同質(同種資料型別);
3. 資料的生成(numpy支援多種資料型別)
a. 使用列表或元組資料構造
# 1.1 列表
arr1 = np.array([[1,2],[3,4]])
print(arr1)
'''[[1 2]
[3 4]]
'''# 1.2 元組
arr2 = np.array(((1,2),(3,4)))
print(arr2)
'''[[1 2]
[3 4]]
'''
b. 特殊陣列
# 1.3 特殊陣列(0,1陣列)
arr3 = np.ones((2,1)) # 可以使用[2,1]或(1,2),通常使用(1,2)
print(arr3)
arr4 = np.zeros((2,1))
print(arr4)
'''[[ 1.]
[ 1.]]
[[ 0.]
[ 0.]]
'''
c. 產生等差/等比數列的陣列
# 1.4 產生等差陣列
arr5 = np.arange(0,5,1) # 起始,終止(不含),步長
print(arr5)
arr6 = np.linspace(0,5,5) # 起始,終止,個數
print(arr6)
# 建立等比數列,比例為10,起始值10^1(10),終止值為10^2(100),有2個數的等比數列
arr3 = np.logspace(1,2,2,base=10)
print(arr3)
s = 'abcd'
arr4 = np.fromstring(s,dtype=np.int8)
print(arr4)
'''[0 1 2 3 4]
[ 0. 1.25 2.5 3.75 5. ]
[ 10. 100.]
[ 97 98 99 100]
'''
d. 產生隨機數陣列
# 1.5 隨機數
arr7 = np.random.random((3,2))
print(arr7)
'''[[ 0.76359424 0.12621422]
[ 0.11343905 0.28138512]
[ 0.36330518 0.6561023 ]]
'''
e. 改變陣列的形式(特別,當reshape(1,n)時,即實現多維陣列的展開)
# 1.6 改變陣列的形狀
arr8 = np.arange(0,6).reshape(2,3)
print(arr8)
'''[[0 1 2]
[3 4 5]]
'''
4. 基本操作
a. 算術運算(加、減、乘、除、矩陣積)
# 2.1 算術運算
arr1 = np.arange(0,4).reshape(2,2)
print(arr1)
arr1_mul = arr1*2 # 陣列點積
print(arr1_mul) # [[ 2 3]
arr2 = np.arange(0,4).reshape(2,2)
arr1_mul = arr1.dot(arr2) # 矩陣乘積
print(arr1_mul)
'''原陣列:
[[0 1]
[2 3]]
陣列中每個元素乘以2
[[0 2]
[4 6]]
陣列與陣列之間的乘積,遵循矩陣的乘法(一行乘以一列)
[[ 2 3]
[ 6 11]]
'''# 2.2 自增和自減
arr3 = np.arange(0,4)
arr3+=1
print(arr3) # [1 2 3 4]
arr3-=1
print(arr3) # [0 1 2 3]
說明:在python中沒有++或--運算子,代替的是:+=1,-=1
b. 常用數學函式
# 向下取整
arr1 = np.random.random((1,3))-0.5
print(arr1)
arr1_floor = np.floor(arr1)
print(arr1_floor)
arr1_around = np.round(arr1,3) # 保留3位小數
print(arr1_around)
'''# 向下取整
[[ 0.14463441 -0.09867913 0.47058381]]
[[ 0. -1. 0.]]
[[ 0.015 0.182 -0.412]]
'''
常用函式參考:
5. 資料索引(抽取陣列中的一部分元素生成新的陣列)
# 1.一維陣列索引
a = np.arange(10)
print(a)#[0 1 2 3 4 5 6 7 8 9]
print(a[3:6])#3,4,5不包含6的值
print(a[:3])#不寫從0開始
print(a[1:8:2])#1-8,步長為2
print(a[::-1])#-1表示反轉陣列
b = np.random.rand(10)
print(b[b>0.5])#b中元素值大於0.5的值
# 2. 二維陣列索引
arr1 = np.arange(0,9).reshape((3,3))
print(arr1)
arr1_query = arr1[0:2,1:] # 分別切行和列
print(arr1_query)
'''[[0 1 2]
[3 4 5]
[6 7 8]]
[[1 2]
[4 5]]
'''
參考:
1.《python資料分析實戰》
Python之Numpy常用操作
1.陣列初始化 生成特定陣列 print np.array 2 3 dtype np.int16 shape 2 print np.zeros 2 3 shape 2,3 print np.empty 2 3 shape 2,3 print np.random.random 2 3 shape 2,...
Python筆記 Numpy之常用統計函式
第乙個引數cond,是乙個布林型陣列 第二個引數xarr,是乙個任意陣列 常量 變數 第三個引數yarr,是乙個任意陣列 常量 變數 該函式根據cond的真值來選取xarr或yarr中的元素,當cond第n個元素的值為true,則獲取xarr對應位置的元素資料,否則獲取yarr對應位置的元素資料,最...
python的numpy庫結構 Numpy庫簡介
今天給大家分享乙個資料分析處理資料的常見的庫 numpy。這個庫是 python 資料分析的基礎,它提供的資料結構比 python 自身的更高效。我們知道 python 有自帶的列表資料結構。numpy 庫和 list 列表有什麼區別呢?python list 列表儲存的是物件的指標,比如 0,1,...