AI基礎學習-NumPy

前言:

參照了黃博士的學習筆記,練習了一下,記錄一下學習筆記!

https://github.com/fengdu78/Data-Science-Notes

NumPy(Numeric Python)提供了許多高級的數值編程工具,如:矩陣數據類型、矢量處理,以及精密的運算庫。專爲進行嚴格的數字處理而產生。多爲很多大型金融公司使用,以及核心的科學計算組織如:Lawrence Livermore,NASA用其處理一些本來使用C++,Fortran或Matlab等所做的任務。

 

代碼練習:

import numpy as np
from numpy import  array
# 第二單元: Numpy創建array
# 2.1一維array創建
# a = np.array([2,23,4],dtype=np.int32) #np.int 默認爲int32
# print(a)
# print(a.dtype)
#多維array創建
# a = np.zeros((3,4))
# print(a) # 生成3行4列的全零矩陣
# 創建全1數據
# a = np.ones((3,4),dtype=np.int)
# print(a)
# 創建連續數組
# a = np.arange(10,21,2) # 10-20的數據,步長爲2
# print(a)
# 創建連續型數據
# a = np.linspace(1,10,20) # 開始端口1,結束端10,且分割成20個數據,生成線段
# print(a)
# # 同時也可以reshape
# b = a.reshape((5,4))
# print(b)

# 第三單元:3.Numpy基本運算
# a = np.array([10,20,30,40])
# b = np.arange(4)
# print(a,b)
# # 在Numpy中,想要求出矩陣中各個元素的乘方需要依賴雙星符號 **,以二次方舉例,即:
# c = b **2
# print(c)
# # Numpy中具有很多的數學函數工具
# d = np.sin(a)
# print(d)
# print(b<2)
# e = np.array([1,1,4,3])
# d = np.arange(4)
# print(e == d)
# 多維矩陣運算
# a = np.array([[1,1],[0,1]])
# b = np.arange(4).reshape((2,2))
# print(a)
# print(b)
# 多維矩陣乘法不能直接使用'*'號
# a = np.random.random((2,4))
# print(np.sum(a))
# print('a= ',a)
# # 當axis的值爲0的時候,將會以列作爲查找單元,
# # 當axis的值爲1的時候,將會以行作爲查找單元。
# print("sum=",np.sum(a,axis=1))
# 3.3 基本計算
# A = np.arange(2,14).reshape((3,4))
# print(A)
# # 最小元素索引
# print(np.argmin(A)) # 0
# # 最大元素索引
# print(np.argmax(A)) # 11
# # 求整個矩陣的均值
# print(np.mean(A)) # 7.5
# print(np.average(A)) # 7.5
# print(A.mean()) # 7.5
# # 中位數
# print(np.median(A)) # 7.5
# # 累加
# print(np.cumsum(A))
# # 仿照列表排序
# B = np.arange(14,2,-1).reshape((3,4)) # -1表示反向遞減一個步長
# print(B)
# print(np.sort(A))
# # 矩陣逆置
# print(np.transpose(B))
# # 矩陣轉置
# print(B.T)
# print(B)
# # clip(Array,Array_min,Array_max)
# # 將Array_min<X<Array_max X表示矩陣A中的數,如果滿足上述關係,則原數不變。
# # 否則,如果X<Array_min,則將矩陣中X變爲Array_min;
# # 如果X>Array_max,則將矩陣中X變爲Array_max.
# print(np.clip(A,5,9))

#第四單元: Numpy索引與切片
# A = np.arange(3,15)
# print(A)
# B = A.reshape(3,4)
# print(B)
# # list切片操作
# print(B[1,1:3]) # [8 9] 1:3表示1-2不包含3
# # 如果要打印列,則進行轉置即可
# for column in B.T:
#     print(column)

#第五單元: Numpy array合併
# A = np.array([1,1,1])
# B = np.array([2,2,2])
# print(np.vstack((A,B)))
# #數組轉置爲矩陣
# print(A[np.newaxis,:]) # [1 1 1]變爲[[1 1 1]]

#第六單元: 6.Numpy array分割
# 6.2 等量分割
# A = np.arange(12).reshape((3,4))
# print(A)
# # 等量分割
# # 縱向分割同橫向合併的axis
# print(np.split(A, 2, axis=1))

# 7.Numpy copy與 =
# `=`賦值方式會帶有關聯性
# a = np.arange(4)
# print(a)  # [0 1 2 3]
# b = a
# c = a
# d = b
# a[0] = 11
# print(a) # [11 1 2 3]
# 7.2copy()賦值方式沒有關聯性
# a = np.arange(4)
# print(a)
# b =a.copy() # deep copy
# print(b) # [0 1 2 3]
# a[3] = 44
# print(a) # [ 0 1 2 44]
# print(b) # [0 1 2 3]
# 此時a與b已經沒有關聯

# 第八章:廣播機制
# numpy數組間的基礎運算是一對一,也就是a.shape==b.shape,但是當兩者不一樣的時候,就會自動觸發廣播機制,如下例子:
# a = array([[ 0, 0, 0],
# [10,10,10],
# [20,20,20],
# [30,30,30]])
# b = array([0,1,2])
# print(a+b) #圖三、圖四

# 第九章:常用的函數:
# np.bincount 統計索引出現次數
x = np.array([1, 2, 3, 3, 0, 1, 4])
print(np.bincount(x))
w = np.array([0.3,0.5,0.7,0.6,0.1,-0.9,1])
print(np.bincount(x,weights=w))
# np.argmax()  函數表示返回沿軸axis最大值的索引,從0 開始。
x = np.array([1, 1, 5, 3, 0, 1, 0])
print(x.argmax())
# 9.3 上述合併實例
x = np.array([1, 2, 3, 3, 0, 1, 4])
print(np.argmax(np.bincount(x)))
# np.around 求取精度
np.around([-0.6,1.2798,2.357,9.67,13], decimals=0)#取指定位置的精度
#看到沒,負數進位取絕對值大的!
np.around([1,2,5,50,56,190], decimals=-2)
#看到沒,必須看兩位,超過50纔會進位,190的話,就看後面兩位,後兩位90超過50,進位,那麼爲200!
#計算沿指定軸第N維的離散差值
x = np.arange(1 , 16).reshape((3 , 5))
print(x)


小結:

也太好用了吧,矩陣的運算變得非常方便
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章