70個NumPy練習:在Python下一舉搞定機器學習矩陣運算
GIF
翻譯| 王柯凝
責編 | suisui
【導讀】Numpy是一個開源的Python科學計算庫,專用於存儲和處理大型矩陣,相比Python自身的嵌套列表結構要高效很多,是數據分析、統計機器學習的必備工具。Numpy還是深度學習工具Keras、sk-learn的基礎組件之一。
此處的70個numpy練習,可以作為你學習numpy基礎之後的應用參考。練習難度分為4層:從1到4依次增大。
快來試試你的矩陣運算掌握到了什麼程度:
1.導入模塊numpy並以np作為別名,查看其版本
難度:1
問題:導入模塊numpy並以np作為別名,列印版本號
答案:
你必須將模塊numpy導入,以np命名,練習中的其他代碼才能正常運行。
安裝numpy,建議使用anaconda提供的安裝方案。
anaconda鏈接:https://www.anaconda.com/download/
2.如何創建一個一維數組?
難度:1
問題:創建一個含有從0到9數字的一維數組,並輸出
答案:
3.如何創建布爾數組?
難度:1
問題:創建一個3×3的所有值為True的numpy數組。
答案:
4.如何從1維數組中提取滿足給定條件的元素?
難度:1
問題:從arr數組中提取所有奇數元素。
輸入:
輸出:
答案:
5.在numpy數組中,如何用另一個值替換滿足條件的元素?
難度:1
問題:用-1替換arr數組中所有的奇數。
輸入:
輸出:
答案:
6.如何替換滿足條件的元素而不影響原始數組?
難度:2
問題:將arr數組中的所有奇數替換為-1而不更改arr數組
輸入:
輸出:
答案:
7.如何重塑數組?
難度:1
問題:將1維數組轉換為2行的2維數組
輸入:
輸出:
答案:
8.如何垂直堆疊兩個數組?
難度:2
問題:垂直堆疊數組a和b。
輸入:
輸出:
答案:
9.如何水平堆疊兩個數組?
難度:2
問題:水平堆疊數組a和b。
輸入:
輸出:
答案:
10.沒有硬編碼的情況下,在numpy中如何生成自定義序列?
難度:2
問題:創建以下模式而不使用硬編碼。只能使用numpy函數和輸入數組a。
輸入:
輸出:
答案:
11.如何獲得兩個python numpy數組之間的共同元素?
難度:2
問題:獲取數組a和b之間的共同元素。
輸入:
輸出:
答案:
12.從一個數組中刪除存在於另一個數組中的元素?
難度:2
問題:從數組a中刪除在數組b中存在的所有元素。
輸入:
輸出:
答案:
13.獲取兩個數組元素匹配的索引號。
難度:2
問題:獲取數組a和b的元素匹配的索引號
輸入:
輸出:
答案:
14.從numpy數組中提取給定範圍內的所有數字?
難度:2
問題:從數組a提取5到10之間的所有元素。
輸入:
輸出:
答案:
15.如何將處理標量的python函數在numpy數組上運行?
難度:2
問題:將處理兩個標量函數maxx在兩個數組上運行。
輸入:
輸出:
答案:
16.如何交換2維numpy數組中的兩個列?
難度:2
問題:交換數組arr中的第1列和第2列。
答案:
17.如何交換2維numpy數組中的兩個行?
難度:2
問題:在數組arr中交換第1行和第2行。
答案:
18.如何反轉2維數組的行?
難度:2
問題:反轉二維數組arr的行。
答案:
19.如何反轉二維數組的列?
難度:2
問題:顛倒二維數組arr的列。
答案:
20.如何創建一個包含5到10之間隨機浮點數的二維數組?
難度:2
問題:創建一個5×3的二維數組,以包含5到10之間的隨機浮點數。
答案:
21.列印python numpy數組並保留3位小數?
難度:1
問題:列印或顯示numpy數組rand_arr,並三位小數。
輸入:
答案:
22.如何使用科學記數法(如1e10)漂亮地列印一個numpy數組?
難度:1
問題:使用科學記數法(如1e10)漂亮的列印數組rand_arr
輸入:
輸出:
答案:
23.如何限制numpy數組輸出中列印元素的數量?
難度:1
問題:將python numpy數組a中列印的元素數量限制為最多6個。
輸入:
輸出:
答案:
24.如何在不截斷的情況下列印完整的numpy數組?
難度:1
問題:列印完整的numpy數組a,且不截斷。
輸入:
輸出:
答案:
25.如何在python numpy中導入含有數字和文本的數據集,並保持的文本完整性?
難度:2
問題:導入iris數據集並保持文本不變。
答案:
由於我們想保留物種,一個文本欄位,我已經把dtype設置為object。設置dtype = None,則會返回一維元組數組。
26.如何從一維元組數組中提取特定的列?
難度:2
問題:從上一個問題中導入的一維iris數組中提取species文本列。
輸入:
答案:
27.如何將一維元組數組轉換為二維numpy數組?
難度:2
問題:通過省略species文本欄位將一維iris數組轉換為二維數組iris_2d。
輸入:
答案:
28.如何計算numpy數組的平均值,中位數,標準差?
難度:1
問題:找出 iris的 sepallength平均值,中位數,標準差(第1列)
答案:
29.如何標準化一個數組至0到1之間?
難度:2
問題:創建一個規範化形式的iris的sepallength,其值的範圍在0和1之間,最小值為0,最大值為1。
輸入:
答案:
30.如何計算softmax值?
難度:3
問題:計算sepallength的softmax分數。
答案:
31.如何找到一個numpy數組的百分位的值?
難度:1
問題:找到iris的sepallength第5位和第95百分位的值。
答案:
32.如何在數組中的隨機位置插入一個值?
難度:2
問題:在iris_2d數據集的20個隨機位插入np.nan值
答案:
33.如何找到numpy數組中缺失值的位置?
難度:2
問題:在iris_2d的sepallength(第1列)中查找缺失值的數量和位置。
答案:
34.如何根據兩個或多個條件過濾一個numpy數組?
難度:3
問題:過濾具有petallength(第3列)> 1.5和sepallength(第1列)
答案:
35.如何從numpy數組中刪除包含缺失值的行?
難度:3:
問題:選擇沒有nan值的iris_2d數組的行。
答案:
36.如何找到numpy數組的兩列之間的相關性?
難度:2
問題:在iris_2d數組中查找SepalLength(第1列)和PetalLength(第3列)之間的關係。
答案:
37.如何查找給定數組是否有空值?
難度:2
問題:找出數組iris_2d是否有缺失的值。
答案:
38.如何在numpy數組中使用0替換所有缺失值?
難度:2
問題:在numpy數組中用0替換nan。
答案:
39.如何查找numpy數組中的唯一值的數量?
難度:2
問題:找出iris的species中的唯一值及其數量。
答案:
40.如何將數值轉換為分類(文本)數組?
難度:2
問題:將iris_2d的花瓣長度(第3列)組成一個文本數組,如果花瓣長度為:
3-5則為"中"
"> = 5則為"大"
答案:
41.如何從numpy數組的現有列創建一個新的列?
難度:2
問題:在iris_2d中為volume創建一個新列,其中volume是(pi x petallength x sepal_length ^ 2)/ 3。
答案:
42.如何在numpy中進行概率抽樣?
難度:3
問題:隨機抽樣iris的species,使setose是versicolor和virginica的數量的兩倍。
答案:
方法2是首選,因為它創建了一個可用於採樣二維表格數據的索引變數。
43.用另一個數組分組時,如何獲得數組中第二大的元素值?
難度:2
問題:第二長的物種的最大價值是什麼?
答案:
44.如何按列排序二維數組?
難度:2
問題:根據sepallength列對iris數據集進行排序。
答案:
45.如何在numpy數組中找到最頻繁出現的值?
難度:1
問題:找到iris數據集中最常見的花瓣長度值(第3列)。
輸入:
答案:
46.如何找到首次出現的值大於給定值的位置?
難度:2
問題:查找在iris數據集的第4列花瓣寬度中第一次出現值大於1.0的位置。
答案:
47.如何將所有大於給定值的值替換為給定的cutoff值?
難度:2
問題:從數組a中,替換大於30包括30且小於10到10的所有值。
輸入:
答案:
48.如何從numpy數組中獲取n個值的位置?
難度:2
問題:獲取給定數組a中前5個最大值的位置。
答案:
49.如何計算數組中所有可能值的行數?
難度:4
問題:計算有唯一值的行數。
輸入:
輸出:
輸出包含10列,表示1到10之間的數字。這些值是相應行中數字數量。
例如,單元(0,2)的值為2,這意味著數字3在第一行中恰好出現2次。
答案:
50.如何將多維數組轉換為平坦的一維數組?
難度:2
問題:將array_of_arrays轉換為平坦的線性一維數組。
輸入:
輸出:
答案:
51.如何為numpy中的數組生成獨熱編碼?
難度:4
問題:計算獨熱編碼。
輸入:
輸出:
答案:
52.如何創建按分類變數分組的行號?
難度:3
問題:創建由分類變數分組的行號。使用iris的species中的樣品作為輸入。
輸入:
輸出:
答案:
53.如何根據給定的分類變數創建分組ID?
難度:4
問題:根據給定的分類變數創建組ID。使用以下iris的species中樣品作為輸入。
輸入:
輸出:
答案:
54.如何使用numpy排列數組中的元素?
難度:2
問題:為給定的數字數組a排序。
輸入:
輸出:
答案:
55.如何使用numpy對多維數組中的元素進行排序?
難度:3
問題:創建一個與給定數字數組a相同形式的排列數組。
輸入:
輸出:
答案:
56.如何找到numpy二維數組每一行中的最大值?
難度:2
問題:計算給定數組中每一行的最大值。
答案:
57.如何計算numpy二維數組每行中的最小值?
難度:3
問題:針對給定的二維numpy數組計算每行的min-max。
答案:
58.如何在numpy數組中找到重複的記錄?
難度:3
問題:在給定的numpy數組中找到重複的條目(從第2個起),並將它們標記為True。第一次出現應該是False。
輸出:
答案:
59.如何找到numpy中的分組平均值?
難度:3
問題:查找由二維numpy數組中的分類列分組的數值列的平均值
輸入:
輸出:
答案:
60.如何將PIL圖像轉換為numpy數組?
難度:3
問題:從以下URL中導入圖像並將其轉換為numpy數組。
URL="https://upload.wikimedia.org/wikipedia/commons/8/8b/Denali_Mt_McKinley.jpg"
答案:
61.如何從一個numpy數組中刪除所有缺失的值?
難度:2
問題:從一維numpy數組中刪除所有nan值
輸入:
輸出:
答案:
62.如何計算兩個數組之間的歐氏距離?
難度:3
問題:計算兩個數組a和b之間的歐式距離。
輸入:
答案:
63.如何在一維數組中找到所有局部最大值(或峰值)?
難度:4
問題:在一維numpy數組a中查找所有峰值。峰值是兩側較小值包圍的點。
輸入:
輸出:
其中,2和5是峰值7和6的位置。
答案:
64.如何從二維數組中減去一維數組,其中一維數組的每個元素都從相應的行中減去?
難度:2
問題:從二維數組a_2d中減去一維數組b_1d,使得每個b_1d項從a_2d的相應行中減去。
輸出:
答案:
65.如何找到數組中第n個重複項的索引
難度:2
問題:找出x中第1個重複5次的索引。
答案:
66.如何將numpy的datetime64對象轉換為datetime的datetime對象?
難度:2
問題:將numpy的datetime64對象轉換為datetime的datetime對象。
答案:
67.如何計算numpy數組的移動平均值?
難度:3
問題:計算給定一維數組窗口大小為3的移動平均值。
輸入:
答案:
68.如何只給出起點,長度和步長來創建一個numpy數組序列?
難度:2
問題:創建一個長度為10的numpy數組,從5開始,在連續數字之間有一個3的步長。
答案:
69.如何填寫不規則的numpy日期系列中的缺失日期?
難度:3
問題:給定一個不連續的日期數組。通過填補缺失的日期,使其成為連續的日期序列。
輸入:
答案:
70.如何在給定一個一維數組中創建步長?
難度:4
問題:從給定的一維數組arr,使用步長生成一個二維數組,窗口長度為4,步長為2,如[[0,1,2,3],[2,3,4,5],[4,5,6,7]..]
輸入:
輸出:
答案:
原文地址:
https://www.machinelearningplus.com/101-numpy-exercises-python/
※人工智慧及機器學習與深度學習揭秘
※你是否有音樂天賦?讓機器學習來告訴你
TAG:機器學習 |