Numpy入門教程:練習作業01

2021-03-02 老馬的程序人生
序言

什麼是 NumPy 呢?

NumPy 這個詞來源於兩個單詞 -- Numerical和Python。其是一個功能強大的 Python 庫,可以幫助程式設計師輕鬆地進行數值計算,通常應用於以下場景:

執行各種數學任務,如:數值積分、微分、內插、外推等。因此,當涉及到數學任務時,它形成了一種基於 Python 的 MATLAB 的快速替代。

計算機中的圖像表示為多維數字數組。NumPy 提供了一些優秀的庫函數來快速處理圖像。例如,鏡像圖像、按特定角度旋轉圖像等。

在編寫機器學習算法時,需要對矩陣進行各種數值計算。如:矩陣乘法、求逆、換位、加法等。NumPy 數組用於存儲訓練數據和機器學習模型的參數。

練習作業

1. 創建從0到9的一維數字數組。

【知識點:數組的創建】

【答案】

import numpy as np

arr = np.arange(10)
print(arr)
# [0 1 2 3 4 5 6 7 8 9]

2. 創建一個元素全為True的 3×3 數組。

【知識點:數組的創建】

【答案】

import numpy as np

arr = np.full([3, 3], True, dtype=np.bool)
print(arr)
# [[ True  True  True]
#  [ True  True  True]
#  [ True  True  True]]

3. 從arr中提取所有奇數。

【知識點:搜索】

【答案】

import numpy as np

arr = np.arange(10)

# 方法1
index = np.where(arr % 2 == 1)
print(arr[index])
# [1 3 5 7 9]

# 方法2
x = arr[arr % 2 == 1]
print(x)
# [1 3 5 7 9]

4. 將arr中的偶數元素替換為0。

【知識點:搜索】

【答案】

import numpy as np

arr = np.arange(10)
index = np.where(arr % 2 == 0)
arr[index] = 0
print(arr)
# [0 1 0 3 0 5 0 7 0 9]

5. 將 arr 中的所有偶數元素替換為0,而不改變arr。

【知識點:搜索】

【答案】

import numpy as np

arr = np.arange(10)

# 方法1
x = np.where(arr % 2 == 0, 0, arr)
print(x)
# [0 1 0 3 0 5 0 7 0 9]
print(arr)
# [0 1 2 3 4 5 6 7 8 9]

# 方法2
x = np.copy(arr)
x[x % 2 == 0] = 0
print(x)
# [0 1 0 3 0 5 0 7 0 9]
print(arr)
# [0 1 2 3 4 5 6 7 8 9]

6. 將 arr轉換為2行的2維數組。

【知識點:數組的操作】

【答案】

import numpy as np

arr = np.arange(10)

# 方法1
x = np.reshape(arr, newshape=[2, 5])
print(x)
# [[0 1 2 3 4]
#  [5 6 7 8 9]]

# 方法2
x = np.reshape(arr, newshape=[2, -1])
print(x)
# [[0 1 2 3 4]
#  [5 6 7 8 9]]

7. 垂直堆疊數組a和數組b。

a = np.arange(10).reshape([2, -1])

b = np.repeat(1, 10).reshape([2, -1])

【知識點:數組操作】

【答案】

import numpy as np

a = np.arange(10).reshape([2, -1])
b = np.repeat(1, 10).reshape([2, -1])

print(a)
# [[0 1 2 3 4]
#  [5 6 7 8 9]]
print(b)
# [[1 1 1 1 1]
#  [1 1 1 1 1]]

# 方法1
print(np.concatenate([a, b], axis=0))
# [[0 1 2 3 4]
#  [5 6 7 8 9]
#  [1 1 1 1 1]
#  [1 1 1 1 1]]

# 方法2
print(np.vstack([a, b]))
# [[0 1 2 3 4]
#  [5 6 7 8 9]
#  [1 1 1 1 1]
#  [1 1 1 1 1]]

8. 將數組a與數組b水平堆疊。

a = np.arange(10).reshape([2, -1])

b = np.repeat(1, 10).reshape([2, -1])

【知識點:數組的操作】

【答案】

import numpy as np

a = np.arange(10).reshape([2, -1])
b = np.repeat(1, 10).reshape([2, -1])

print(a)
# [[0 1 2 3 4]
#  [5 6 7 8 9]]
print(b)
# [[1 1 1 1 1]
#  [1 1 1 1 1]]

# 方法1
print(np.concatenate([a, b], axis=1))
# [[0 1 2 3 4 1 1 1 1 1]
#  [5 6 7 8 9 1 1 1 1 1]]

# 方法2
print(np.hstack([a, b]))
# [[0 1 2 3 4 1 1 1 1 1]
#  [5 6 7 8 9 1 1 1 1 1]]

9. 獲取數組a和數組b之間的公共項。

a = np.array([1, 2, 3, 2, 3, 4, 3, 4, 5, 6])

b = np.array([7, 2, 10, 2, 7, 4, 9, 4, 9, 8])

【知識點:集合操作】

【答案】

import numpy as np

a = np.array([1, 2, 3, 2, 3, 4, 3, 4, 5, 6])
b = np.array([7, 2, 10, 2, 7, 4, 9, 4, 9, 8])
x = np.intersect1d(a, b)
print(x)  # [2 4]

10. 從數組a中刪除數組b中的所有項。

a = np.array([1, 2, 3, 4, 5])

b = np.array([5, 6, 7, 8, 9])

【知識點:集合操作】

【答案】

import numpy as np

a = np.array([1, 2, 3, 4, 5])
b = np.array([5, 6, 7, 8, 9])
x = np.setdiff1d(a, b)
print(x)  # [1 2 3 4]

11. 獲取a和b元素匹配的位置。

a = np.array([1, 2, 3, 2, 3, 4, 3, 4, 5, 6])

b = np.array([7, 2, 10, 2, 7, 4, 9, 4, 9, 8])

【知識點:邏輯函數】

【答案】

import numpy as np

a = np.array([1, 2, 3, 2, 3, 4, 3, 4, 5, 6])
b = np.array([7, 2, 10, 2, 7, 4, 9, 4, 9, 8])
mask = np.equal(a, b)

# 方法1
x = np.where(mask)
print(x)  # (array([1, 3, 5, 7], dtype=int64),)

# 方法2
x = np.nonzero(mask)
print(x)  # (array([1, 3, 5, 7], dtype=int64),)

12. 獲取5到10 之間的所有元素。

a = np.array([2, 6, 1, 9, 10, 3, 27])

【知識點:邏輯函數】

【答案】

import numpy as np

a = np.array([2, 6, 1, 9, 10, 3, 27])
mask = np.logical_and(np.greater_equal(a, 5), np.less_equal(a, 10))

# 方法1
x = np.where(mask)
print(a[x])  # [ 6  9 10]

# 方法2
x = np.nonzero(mask)
print(a[x])  # [ 6  9 10]

# 方法3
x = a[np.logical_and(a >= 5, a <= 10)]
print(x)  # [ 6  9 10]

13. 交換數組arr中的列1和列2。

【知識點:索引與切片】

【答案】

import numpy as np

arr = np.arange(9).reshape(3, 3)
print(arr)
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]

x = arr[:, [2, 1, 0]]
print(x)
# [[2 1 0]
#  [5 4 3]
#  [8 7 6]]

14. 交換數組arr中的第1行和第2行。

【知識點:索引與切片】

【答案】

import numpy as np

arr = np.arange(9).reshape(3, 3)
print(arr)
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]

x = arr[[1, 0, 2], :]
print(x)
# [[3 4 5]
#  [0 1 2]
#  [6 7 8]]

15. 反轉二維數組arr的行。

【知識點:索引與切片】

【答案】

import numpy as np

arr = np.arange(9).reshape(3, 3)
print(arr)
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]

x = arr[::-1, :]
print(x)
# [[6 7 8]
#  [3 4 5]
#  [0 1 2]]

16. 反轉二維數組arr的列。

【知識點:索引與切片】

【答案】

import numpy as np

arr = np.arange(9).reshape(3, 3)
print(arr)
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]

x = arr[:, ::-1]
print(x)
# [[2 1 0]
#  [5 4 3]
#  [8 7 6]]

17. 創建一個形為5×3的二維數組,以包含5到10之間的隨機數。

【知識點:隨機抽樣】

【答案】

import numpy as np

x = np.random.randint(5, 10, [5, 3])
print(x)
# [[5 8 8]
#  [5 6 8]
#  [8 8 7]
#  [6 7 9]
#  [6 5 8]]

x = np.random.uniform(5, 10, [5, 3])
print(x)
# [[6.73675226 8.50271284 9.66526032]
#  [9.42365472 7.56513263 7.86171898]
#  [9.31718935 5.71579324 9.92067933]
#  [8.90907128 8.05704153 6.0189007 ]
#  [8.70753644 7.75056151 5.71714203]]

18. 只列印或顯示numpy數組rand_arr的小數點後3位。

【知識點:輸入和輸出】

【答案】

import numpy as np

rand_arr = np.random.random([5, 3])
print(rand_arr)
# [[0.33033427 0.05538836 0.05947305]
#  [0.36199439 0.48844555 0.26309599]
#  [0.05361816 0.71539075 0.60645637]
#  [0.95000384 0.31424729 0.41032467]
#  [0.36082793 0.50101268 0.6306832 ]]

np.set_printoptions(precision=3)
print(rand_arr)
# [[0.33  0.055 0.059]
#  [0.362 0.488 0.263]
#  [0.054 0.715 0.606]
#  [0.95  0.314 0.41 ]
#  [0.361 0.501 0.631]]

19. 將numpy數組a中列印的項數限制為最多6個元素。

【知識點:輸入和輸出】

【答案】

import numpy as np

a = np.arange(15)
print(a)
# [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
np.set_printoptions(threshold=6)
print(a)
# [ 0  1  2 ... 12 13 14]

20. 列印完整的numpy數組a而不中斷。

【知識點:輸入和輸出】

【答案】

import numpy as np

a = np.arange(15)
np.set_printoptions(threshold=6)
print(a)
# [ 0  1  2 ... 12 13 14]
np.set_printoptions(threshold=np.iinfo(np.int).max)
print(a)
# [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]

當前活動

我是 終身學習者「老馬」,一個長期踐行「結伴式學習」理念的 中年大叔

我崇尚分享,渴望成長,於2010年創立了「LSGO軟體技術團隊」,並加入了國內著名的開源組織「Datawhale」,也是「Dre@mtech」、「智慧機器人研究中心」和「大數據與哲學社會科學實驗室」的一員。

願我們一起學習,一起進步,相互陪伴,共同成長。

後臺回復「搜搜搜」,隨機獲取電子資源!
歡迎關注,請掃描二維碼:

相關焦點

  • Numpy入門詳細教程
    numpy入門詳細教程python數據科學基礎庫主要是三劍客:numpy,pandas以及matplotlib,每個庫都集成了大量的方法接口,配合使用功能強大。平時雖然一直在用,也看過很多教程,但紙上得來終覺淺,還是需要自己系統梳理總結才能印象深刻。本篇先從numpy開始,對numpy常用的方法進行思維導圖式梳理,多數方法僅拉單列表,部分接口輔以解釋說明及代碼案例。最後分享了個人關於axis和廣播機制的理解。
  • 數據系列教程之numpy( 三)
    數據分析系列教程之numpy( 一)數據分析系列教程之numpy(二)上周講了數據分析入門的前兩節,numpy
  • python:numpy入門詳細教程
    平時雖然一直在用,也看過很多教程,但紙上得來終覺淺,還是需要自己系統梳理總結才能印象深刻。本篇先從numpy開始,對numpy常用的方法進行思維導圖式梳理,多數方法僅拉單列表,部分接口輔以解釋說明及代碼案例。最後分享了個人關於axis和廣播機制的理解。
  • 技術圖文:NumPy 的簡單入門教程
    背景這段時間,LSGO軟體技術團隊正在組織 「機器學習實戰刻意練習」活動,這個活動是「Python基礎刻意練習」活動的升級,是對學員們技術的更深層次的打磨。在用 Python 寫各類機器學習算法時,我們經常會用到 NumPy庫,故在這裡總結一下,以方便學員們的學習。什麼是 NumPy 呢?
  • python數據科學系列:numpy入門詳細教程
    平時雖然一直在用,也看過很多教程,但紙上得來終覺淺,還是需要自己系統梳理總結才能印象深刻。本篇先從numpy開始,對numpy常用的方法進行思維導圖式梳理,多數方法僅拉單列表,部分接口輔以解釋說明及代碼案例。最後分享了個人關於axis和廣播機制的理解。本文知識要點一級菜單
  • 清晰易懂的Numpy進階教程
    推薦閱讀:清晰易懂的Numpy入門教程Numpy是數據分析和科學計算的核心包,上文詳細介紹了Numpy的入門教程,本文將詳細介紹Numpy的高級特性,這些特性對於數據分析和處理非常重要。來源:Machine Learning Plus翻譯:石頭目錄1. 如何獲取滿足條設定件的索引2.
  • 清晰易懂的Numpy入門教程
    構建的,機器學習包scikit-learn也大量使用了numpy方法。如何通過numpy生成序列數(sequences),重複數(repetitions)和隨機數(random)7. 小結構建numpy數組的方法很多,比較常用的方法是用np.array函數對列表進行轉化。
  • 清晰易懂的 Numpy 入門教程
    構建的,機器學習包scikit-learn也大量使用了numpy方法。如何通過numpy生成序列數(sequences),重複數(repetitions)和隨機數(random)7. 小結構建numpy數組的方法很多,比較常用的方法是用np.array函數對列表進行轉化。
  • 101道Numpy、Pandas練習題
    其中最常用、最基礎的Python庫非numpy和pandas莫屬,很多初學者可能看了很多教程,但是很快就把用法忘光了。光看不練假把式,今天向大家推薦三套感覺不錯的練習題,感興趣的同學可以練練手,挑戰一下。
  • 首發:適合初學者入門人工智慧的路線及資料下載
    三、倉庫目錄及概述0.math數學基礎1.python-basic python基礎 2.numpynumpy基礎這部分內容曾經有文章介紹(查看文章)第二部分,python學習目錄名稱:1.python-basic python基礎:這裡有個代碼練習:兩天入門python目錄名稱: 2.numpy
  • Numpy學習打卡task01
    今天帶來的是Datawhale自主學習Numpy下學習打卡筆記第一部分—輸入輸出(為什麼沒有上,別問,問就是numpy.tan(90))。本文大致介紹了numpy的相關背景知識。本文素材來自網絡及datawhale,糾錯指正、深入探討,咱們評論區見。
  • 如何系統地學習Python 中 matplotlib, numpy, scipy, pandas?
    https://jizhi.im/blog/post/10min2pandas01如何用 Pandas 和 Python 成為數據分析師:https://www.zhihu.com/question/29265587/answer/443295777在 Python 中使用 Pandas
  • numpy入門
    1.一個強大的N維數組對象 ndarray         2.廣播功能函數         3.線性代數、傅立葉變換、隨機數生成等功能二.NumPy安裝方式1:pip install numpy
  • 最全的NumPy教程
    使用我們的在線編譯器嘗試一下示例,它位於 CodingGroundhttps://www.tutorialspoint.com/codingground.htmimport numpy as np  a =  'hello world'  print a對於本教程中給出的大多數示例,你會在我們的網站代碼部分的右上角找到一個
  • Numpy入門指南
    Numpy 入門指南array基本屬性Numpy的主要對象是同構多維數組。
  • 100道 NumPy 典型實例與答案
    沒有基礎的同學可以先學習下面這2個教程 (幫忙分享文章到朋友圈,免費給大家源碼哈)NumPy 10分鐘入門教程Python3 10分鐘入門教程需要源碼的同學幫忙把文章分享到朋友圈,然後加微信:2252377210 ^_^找姐要。1.
  • Python 繪圖庫 Matplotlib 入門教程
    本文是對它的一個入門教程。運行環境由於這是一個Python語言的軟體包,因此需要你的機器上首先安裝好Python語言的環境。關於這一點,請自行在網絡上搜索獲取方法。關於如何安裝Matplotlib請參見這裡:Matplotlib Installing。
  • 大數據分析Python NumPy庫使用教程
    大數據分析Python NumPy庫使用教程為數據工程師提供有關NumPy的從零開始的培訓。這意味著您不需要具有NumPy的任何經驗,也不會浪費任何時間學習與數據工程工作無關的東西。 在瀏覽了基礎知識之後,您將快速開始使用NumPy來構建和操作二維和三維數組。
  • AutoCAD2021練習圖1第2講, cad新手自學入門教程
    AutoCAD2021練習圖1第2講, cad新手自學入門教程 2020-11-29
  • 數據分析之Numpy入門
    目錄1、什麼是numpy2、安裝numpy3、n維數組對象4、數組創建5、數組維度6、數組元素個數7、數組元素數據類型8、改變數組形狀9、數組索引和切片操作10、數組轉換與元素迭代11、數組級聯操作numpy具有以下三大特點2、安裝numpynumpy是一個python庫,所以使用python包管理工具pip或者conda都可以安裝pip install numpy或者conda install numpy