70個NumPy練習:在Python下一舉搞定機器學習矩陣運算

2021-02-19 人工智慧頭條

翻譯 | 王柯凝

責編 | 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列)<5.0的iris_2d的行。



答案:



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則為'小'

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/


掃描二維碼,關注「人工智慧頭條」

回復「技術路線圖」獲取 AI 技術人才成長路線圖

相關焦點

  • Python學習第116課——numpy.dot和矩陣相乘的數學運算
    所以我們必須要接觸matrix(矩陣)的一些概念,我們可以把matrix看做是一種非常有用的數據儲存的結構。在後面的物理、Fintech(科技金融)、圖像識別、機器學習等方面,都可以用到矩陣。因此矩陣的數學原理也是非常重要的,感興趣的話可以去看看。
  • 機器學習的數學 之 python 矩陣運算
    一、 什麼是矩陣一個 m × n 的矩陣是一個由 m 行 n 列元素排列成的矩形陣列。以下是一個由 6 個數字元素構成的 2 行 3 列的矩陣:矩陣屬於線性代數數學分支。線性代數是關於向量空間和線性映射的一個數學分支。它包括對線、面和子空間的研究,同時也涉及到所有的向量空間的一般性質。
  • 幹掉公式 —— numpy 就該這麼學
    機器學習和數據分析變得越來越重要,但在學習和實踐過程中,常常因為不知道怎麼用程序實現各種數學公式而感到苦惱,今天我們從數學公式的角度上了解下,用 python 實現的方式方法。可能這裡比較繞或冗餘,先解釋到這裡,後面的文章中會進一步解釋向量和矩陣的實際意義初始化numpy 中,提供了多種產生向量和矩陣的方法,例如用 array 可以將 python 數組初始化為 numpy 矩陣:m = np.array([(1,2,3),(2,3,4),(3,4,5)])就可以創建一個 向量維度為 3,個數為 3
  • 學員筆記|Python數據分析之numpy入門(三)
    以下講到的add,subtract等都是numpy提供的ufunc函數。                                           逐元素運算:就是兩個shap一致的矩陣,相同位置上的元素的運算。
  • Python的武器庫05:numpy模塊(下)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以有這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。
  • 資源|用Python和NumPy學習《深度學習》中的線性代數基礎
    本文系巴黎高等師範學院在讀博士 Hadrien Jean 的一篇基礎學習博客,其目的是幫助初學者/高級初學者基於深度學習和機器學習來掌握線性代數的概念。掌握這些技能可以提高你理解和應用各種數據科學算法的能力。
  • Python冬令營-Numpy 使用簡介
    source: https://realpython.com/numpy-tutorial/#hello-numpy-curving-test-grades-tutorial聲明:本篇推送的主要內容翻譯自:https://realpython.com/numpy-tutorial/#hello-numpy-curving-test-grades-tutorial
  • 好程式設計師Python培訓分享numpy簡介
    機器學習模型:在編寫機器學習算法時,需要對矩陣進行各種數值計算。例如矩陣乘法、換位、加法等。 二、numpy安裝 numpy要求python版本在3.5以上 1.windows下的安裝 · pip安裝 python -m pip install
  • Numpy練習題-鍛鍊手寫機器學習模型的能力
    Numpy是一個用python實現的科學計算的擴展程序庫,包括:1、一個強大的N維數組對象Array;2、比較成熟的(廣播)函數庫;3、用於整合C/C++和Fortrannumpy和稀疏矩陣運算包scipy配合使用更加方便。NumPy(Numeric Python)提供了許多高級的數值編程工具,如:矩陣數據類型、矢量處理,以及精密的運算庫。專為進行嚴格的數字處理而產生。
  • 矩陣乘法的純Python實現 | 離開Python庫!!
    在《這篇文章》中,我們有簡單提到「矩陣乘法」的相關知識,如果你不記得了,可以複習一下這張圖片。想起來了沒?本篇文章將深入探討在沒有機器學習庫的情況下如何從零實現矩陣乘法!你有沒有想過在沒有任何複雜的機器學習庫的情況下處理機器學習問題?
  • Python+numpy實現矩陣QR分解
    如果實(復)非奇異矩陣A能夠化成正交(酉)矩陣Q與實(復)非奇異上三角矩陣R的乘積,即A=QR,則稱其為A的QR分解。Python擴展庫numpy實現了矩陣QR分解的函數qr(),除本文演示的用法之外,該函數的mode參數還支持另外幾個值,可以通過help(numpy.linalg.qr)查看詳細信息並結合矩陣分析的有關知識進行理解。
  • 氣象編程 | Numpy練習題-鍛鍊手寫機器學習模型的能力
    Numpy是一個用python實現的科學計算的擴展程序庫,包括:1、一個強大的N維數組對象Array;2、比較成熟的(廣播)函數庫;numpy和稀疏矩陣運算包scipy配合使用更加方便。NumPy(Numeric Python)提供了許多高級的數值編程工具,如:矩陣數據類型、矢量處理,以及精密的運算庫。專為進行嚴格的數字處理而產生。
  • NumPy的算術運算
    在機器學習和深度學習中,涉及大量的數組或矩陣運算,本節我們將重點介紹兩種常用的運算:對應元素相乘對應元素相乘(Element-Wise
  • 學員筆記||Python數據分析之:numpy入門(一)
    numpy最主要的是支持矩陣操作與運算非常高效是numpy的優勢,core為C編寫。提升了python的處理效率numpy是一些與比較流行的機器學習框架的基礎。 名詞解釋:ndarray是numpy的核心數據類型,即(n-dimensional array)多維數組,tensorflow中的tensor(張量),它本質上也多維數組,但這個名字很高大上。因此,理解多維數組對之後的機器學習會有很大幫助。導入import numpy as np
  • Python機器學習·微教程
    在這個教程裡,你將學會:如何處理數據集,並構建精確的預測模型使用Python完成真實的機器學習項目這是一個非常簡潔且實用的教程,希望你能收藏,以備後面複習!接下來進入正題~這個微課程適合誰學習?如果你不符合以下幾點,也沒關係,只要花點額外時間搞清楚知識盲點就能跟上。所以這個教程既不是python入門,也不是機器學習入門。
  • Python必備基礎:這些NumPy的神操作你都掌握了嗎?
    這樣為了保存一個簡單的[1,2,3],都需要有3個指針和3個整數對象。對於數值運算來說,這種結構顯然比較浪費內存和CPU計算時間。至於array對象,它直接保存數值,和C語言的一維數組比較類似。但是由於它不支持多維,也沒有各種運算函數,因此也不適合做數值運算。
  • Python 技巧 —— 矩陣操作
    NumPy 是一個 Python 庫,可以對單個和多維數組和矩陣進行簡單的數值計算。顧名思義,NumPy 在數值計算中脫穎而出。許多數據科學庫(如 pandas、 scikit-learn 和 SciPy)都依賴 NumPy。它構成了當今 python 編寫的數據科學應用程式的一部分。許多線性代數計算可以很容易地解決 NumPy。
  • Python學習第114課——numpy中ndarray的四則運算
    【每天幾分鐘,從零入門python編程的世界!】我們為什麼要學習numpy?numpy其實就是number+Python的簡寫,意思就是通過Python對數據進行處理。這節我們學習numpy中數組的一些基本的四則運算。●numpy中數組的加法運算我們首先生成x和y兩個float類型的數組,然後把它們進行相加。
  • 機器學習必備Python庫之Numpy基礎學習
    Numpy 是Python語言的一個庫(library),專為數字處理而生,是進行機器學習研究的必學工具。
  • 教程| 基礎入門:深度學習矩陣運算的概念和代碼實現
    本文從向量的概念與運算擴展到矩陣運算的概念與代碼實現,對機器學習或者是深度學習的入門者提供最基礎,也是最實用的教程指導,為以後的機器學習模型開發打下基礎。在我們學習機器學習時,常常遇到需要使用矩陣提高計算效率的時候。如在使用批量梯度下降迭代求最優解時,正規方程會採用更簡潔的矩陣形式提供權重的解析解法。