又到了NumPy進階修煉專題。NumPy大家應該不陌生了,看了太多的原理講解之後,用刷題來學習是最有效的方法,本文將帶來20個NumPy經典問題,附贈20段實用代碼,拿走就用,建議打開Jupyter Notebook邊敲邊看。
數據查找
問:如何獲得兩個數組之間的相同元素
輸入:
import numpy as npimport pandas as pdimport warningswarnings.filterwarnings("ignore")arr1 = np.random.randint(10,6,6)arr2 = np.random.randint(10,6,6)答案:
arr1 = np.random.randint(10,6,6)arr2 = np.random.randint(10,6,6)print("arr1: %s"%arr1)print("arr2: %s"%arr2)np.intersect1d(arr1,arr2)
數據修改
問:如何從一個數組中刪除另一個數組存在的元素
輸入:
arr1 = np.random.randint(10,6,6)arr2 = np.random.randint(10,6,6)答案:
arr1 = np.random.randint(1,10,10)arr2 = np.random.randint(1,10,10)print("arr1: %s"%arr1)print("arr2: %s"%arr2)np.setdiff1d(arr1,arr2)
數據修改
問:如何修改一個數組為只讀模式
輸入:
arr1 = np.random.randint(1,10,10)答案:
arr1 = np.random.randint(1,10,10)arr1.flags.writeable = False
數據轉換
問:如何將list轉為numpy數組
輸入:
a = [1,2,3,4,5]答案:
a = [1,2,3,4,5]np.array(a)
數據轉換
問:如何將pd.DataFrame轉為numpy數組
輸入:
df = pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]})答案:
df.values
數據分析
問:如何使用numpy進行描述性統計分析
輸入:
arr1 = np.random.randint(1,10,10)arr2 = np.random.randint(1,10,10)答案:
arr1 = np.random.randint(1,10,10)arr2 = np.random.randint(1,10,10)print("arr1的平均數為:%s" %np.mean(arr1))print("arr1的中位數為:%s" %np.median(arr1))print("arr1的方差為:%s" %np.var(arr1))print("arr1的標準差為:%s" %np.std(arr1))print("arr1,arr的相關性矩陣為:%s" %np.cov(arr1,arr2))print("arr1,arr的協方差矩陣為:%s" %np.corrcoef(arr1,arr2))
數據抽樣
問:如何使用numpy進行概率抽樣
arr = np.array([1,2,3,4,5])輸入:
arr = np.array([1,2,3,4,5])np.random.choice(arr,10,p = [0.1,0.1,0.1,0.1,0.6])答案:
數據創建
問:如何為數據創建副本
輸入:
arr = np.array([1,2,3,4,5])答案:
#對副本數據進行修改,不會影響到原始數據arr = np.array([1,2,3,4,5])arr1 = arr.copy
數據切片
問:如何對數組進行切片
輸入:
arr = np.arange(10)備註:從索引2開始到索引8停止,間隔為2
答案:
arr = np.arange(10)a = slice(2,8,2)arr[a] #等價於arr[2:8:2]
字符串操作
問:如何使用NumPy操作字符串
輸入:
str1 = ['I love']str2 = [' Python']答案:
#拼接字符串str1 = ['I love']str2 = [' Python']print(np.char.add(str1,str2))#大寫首字母str3 = np.char.add(str1,str2)print(np.char.title(str3))
數據修改
問:如何對數據向上/下取整
輸入:
arr = np.random.uniform(0,10,10)答案:
arr = np.random.uniform(0,10,10)print(arr)###向上取整print(np.ceil(arr))###向下取整print(np.floor(arr) )
格式修改
問:如何取消默認科學計數顯示數據
答案:
np.set_printoptions(suppress=True)
數據修改
問:如何使用NumPy對二維數組逆序
輸入:
arr = np.random.randint(1,10,[3,3])答案:
arr = np.random.randint(1,10,[3,3])print(arr)print('列逆序')print(arr[:, -1::-1])print('行逆序')print(arr[-1::-1, :])
數據查找
問:如何使用NumPy根據位置查找元素
輸入:
arr1 = np.random.randint(1,10,5)arr2 = np.random.randint(1,20,10)備註:在arr2中根據arr1中元素以位置查找
答案:
arr1 = np.random.randint(1,10,5)arr2 = np.random.randint(1,20,10)print(arr1)print(arr2)print(np.take(arr2,arr1))
數據計算
問:如何使用numpy求餘數
輸入:
a = 10b = 3答案:
np.mod(a,b)
數據計算
問:如何使用NumPy進行矩陣SVD分解
輸入:
A = np.random.randint(1,10,[3,3])答案:
np.linalg.svd(A)
數據篩選
問:如何使用NumPy多條件篩選數據
輸入:
arr = np.random.randint(1,20,10)答案:
arr = np.random.randint(1,20,10)print(arr[(arr>1)&(arr<7)&(arr%2==0)])
數據修改
問:如何使用NumPy對數組分類
備註:將大於等於7,或小於3的元素標記為1,其餘為0
輸入:
arr = np.random.randint(1,20,10)答案:
arr = np.random.randint(1,20,10)print(arr)print(np.piecewise(arr, [arr < 3, arr >= 7], [-1, 1]))
數據修改
問:如何使用NumPy壓縮矩陣
備註:從數組的形狀中刪除單維度條目,即把shape中為1的維度去掉
輸入:
arr = np.random.randint(1,10,[3,1])答案:
arr = np.random.randint(1,10,[3,1])print(arr)print(np.squeeze(arr))
數據計算
問:如何使用numpy求解線性方程組
輸入:
A = np.array([[1, 2, 3], [2, -1, 1], [3, 0, -1]])b = np.array([9, 8, 3])備註:求解Ax=b
答案:
A = np.array([[1, 2, 3], [2, -1, 1], [3, 0, -1]])b = np.array([9, 8, 3])x = np.linalg.solve(A, b)print(x)
以上就是我總結的NumPy經典20題,你都會嗎?並且每題我都只給出了一種解法,而事實上每題都有多種解法,所以你應該思考是否有更好的思路。
員工導致Twitter陷入史詩級加密黑客風暴?官方回應來了點分享