數據分析必備,NumPy進階80題(附下載)

2021-01-18 法納斯特


大家好,今天給大家分享一下NumPy的知識,80道習題涵蓋了NumPy中數組創建、訪問、篩選、修改、計算等常用操作,如果不熟悉NumPy的讀者可以刷一遍,因為裡面的代碼大多拿走就能用,所以如果你已經了解NumPy的基本操作,我更建議將這80題當成速查手冊使用,隨用隨查!本文共分為兩個部分:

完整版NumPy80題

Notebook版下載方式(文末獲取)


import numpy as np
print(np.__version__)

備註:你需要關注你的NumPy版本,部分方法會隨著版本更新而變化



array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])



題目:創建10個全為0的一維數據並修改數據類型為整數

np.zeros(10,dtype = 'int')



array([ 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80,
       85, 90, 95])



List = [1,2,3,4,5,6,7,8,9]



#方法1
np.ones((3,3))
#方法2
np.array([[ 1., 1., 1.],
       [ 1., 1., 1.],
       [ 1., 1., 1.]])



題目:創建一個2行2列矩陣並且元素為布爾類型的True

array([[ True, True],
       [ True, True]])

np.full((2,2), True, dtype=bool)



np.linspace(start=5,stop=50,num=10)



備註1:從5開始,50結束,共10個數據,數據類型為int32

np.arange(start = 5, stop = 55, step = 5,dtype = 'int32')

備註2:思考與上一題的不同



np.random.randint(0,10,(3,3))




result = result.reshape(3,3)



result.dtype
#dtype('int64')



#方法一:直接查看
result.nbytes
#方法2
手動計算
result.itemsize * 9
#72


result = result.astype(float)



result[2,2] = result[2,2] * 10



array([ 2., 4., 6., 8., 90.])


result[result % 2 == 1] = 666



result = np.diag([5,5,5,5,5])



a = result[:, [1,0,2,3,4]]



result[result % 2 == 1] = 666











print(np.multiply(a,b))
print('========方法2========')
print(a * b) #方法2







題目:將22與23題生成的np.array對象修改為np.matrix對象

a = np.matrix(a)
b = np.matrix(b)



題目:計算上一題生成的兩個np.matrix格式矩陣的對應元素乘積(對比異同)



題目:對31題生成的兩個np.matrix格式矩陣做矩陣乘法(對比異同)







new = np.pad(result,pad_width = 1,constant_values=1)











題目:生成6行6列的二維數組,值為1-100隨機數

data = np.random.randint(1,100, [6,6])







np.unique(data,return_counts=True)




np.repeat(data, 2, axis=0)





np.random.choice(data[0:1][0], 3, replace=False)



a = data[1:2]
b = data[2:3]
index=np.isin(a,b)
array=a[~index]
array



(~data.any(axis=1)).any()





data1 = data.astype(float)

思考:為什麼不能在data本身轉換



data1[data1 < 5] = np.nan



data1 = data1[~np.isnan(data1).any(axis=1), :]



vals, counts = np.unique(data1[0,:], return_counts=True)
print(vals[np.argmax(counts)])



a = 100
data1.flat[np.abs(data1 - a).argmin()]



題目:計算data1每一行的元素減去每一行的平均值

data1 - data1.mean(axis=1, keepdims=True)



a = np.max(data1) - np.min(data1)
(data1 - np.min(data1)) / a



mu = np.mean(data1, axis=0)
sigma = np.std(data1, axis=0)
(data1 - mu) / sigma



np.savetxt('test.txt',data1)



import numpy as np
import pandas as pd
import warnings
warnings.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

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]})

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))

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)
a = slice(2,8,2)
arr[a] #等價於arr[2:8:2]


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)


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, :])

arr1 = np.random.randint(1,10,5)
arr2 = np.random.randint(1,20,10)

arr1 = np.random.randint(1,10,5)
arr2 = np.random.randint(1,20,10)
print(arr1)
print(arr2)
print(np.take(arr2,arr1))


A = np.random.randint(1,10,[3,3])


arr = np.random.randint(1,20,10)

arr = np.random.randint(1,20,10)
print(arr[(arr>1)&(arr<7)&(arr%2==0)])


備註:將大於等於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]))

備註:從數組的形狀中刪除單維度條目,即把shape中為1的維度去掉
arr = np.random.randint(1,10,[3,1])

arr = np.random.randint(1,10,[3,1])
print(arr)
print(np.squeeze(arr))

A = np.array([[1, 2, 3], [2, -1, 1], [3, 0, -1]])
b = np.array([9, 8, 3])

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)



為了讓各位讀者更方便的刷題,我已經將NumPy80題整理在Notebook中,共分為兩個版本,一份無答案版可以用來刷題👇

一份有答案版本用來參考學習👇


文件已上傳公眾號,回復「numpy」,即可下載完整的NumPy80題。


萬水千山總是情,點個 👍 行不行。



推薦閱讀



···  END  ···


相關焦點

  • NumPy學的還不錯?來試試這20題
    又到了NumPy進階修煉專題。NumPy大家應該不陌生了,看了太多的原理講解之後,用刷題來學習是最有效的方法,本文將帶來20個NumPy經典問題,附贈20段實用代碼,拿走就用,建議打開Jupyter Notebook邊敲邊看。
  • Python數據分析之numpy學習(一)
    在學完《廖雪峰Python2.7教程》感覺受益匪淺,掌握了基本的語法之後開始接觸用Python進行數據分析。這裡向大家推薦兩本書《Python數據分析》和《利用Python進行數據分析》,而這兩本書也是目前我正在學習的材料,雖然這兩本書都是基於Python2.x,但對於Python3.x也能正常運行。
  • Python程式設計師必備——Numpy 100題(附答案)
    1.Import the numpy package under the name np (★☆☆)import numpy as np2.Print the numpy version and the configuration (★☆☆)print(np.
  • 數據分析-numpy庫快速了解
    NumPy是SciPy、Pandas等數據處理或科學計算庫的基礎2.numpy庫有什麼用numpy用途是很廣的,涉及到數字計算等都可以使用,它的優勢在於底層是C語言開發的數據非常快。 數組對象可以去掉元素間運算所需的循環,使一維向量更像單個數據 設置專門的數組對象,經過優化,可以提升這類應用的運算速度觀察:科學計算中,一個維度所有數據的類型往往相同 數組對象採用相同的數據類型,有助於節省運算和存儲空間具體可以看下面一個例子:(來源嵩天老師案例)3.numpy庫怎麼使用先安裝numpy
  • 4種最常見的 SEM 數據分析方法,你用過幾種?
    有經驗的 SEMer 都知道,盡信數據則不如無數據。數據就躺在哪裡,關鍵在分析之前,你之前要有清晰的思維邏輯:你為什麼要分析數據?你希望通過數據分析得到什麼?我一般的分析數據邏輯如下:確定分析的目的—>收集數據—>整理數據—>分析數據—>得到一些分析的思路今天主要分享下數據分析的常用方法,主要四種:1、趨勢分析方法
  • python數據分析基礎之numpy
    支持高級大量的維度數組與矩陣運算,是學習數據挖掘的基礎,今天我們就來總結下numpy的一些基礎用法。首先,在講numpy之前,我先帶領大家預習下大學學習過的矩陣的基礎知識。1、矩陣的基本概念矩陣:由m×n個數排列成 的m行n列的數表,稱為m行n列矩陣。實矩陣:元素是實數的矩陣。復矩陣:元素是負數的矩陣。
  • 清晰易懂的Numpy進階教程
    推薦閱讀:清晰易懂的Numpy入門教程Numpy是數據分析和科學計算的核心包,上文詳細介紹了Numpy的入門教程,本文將詳細介紹Numpy的高級特性,這些特性對於數據分析和處理非常重要。來源:Machine Learning Plus翻譯:石頭目錄1. 如何獲取滿足條設定件的索引2.
  • 大數據分析Python NumPy庫使用教程
    我將在大數據分析Python NumPy庫使用教程中學到什麼? 大數據分析Python NumPy庫使用教程為數據工程師提供有關NumPy的從零開始的培訓。這意味著您不需要具有NumPy的任何經驗,也不會浪費任何時間學習與數據工程工作無關的東西。
  • Python數據分析之Numpy學習 2——NumPy 基礎 ndarray對象
    Python數據分析之Numpy學習 2 —— NumPy 基礎學習NumPy(Numerical Python)是高性能科學計算和數據分析的基礎包。NumPy的主要對象是同構數據多維容器(homogeneous multidimensional array)——ndarray,也就是說每一個ndarray都是一個相同類型元素組成的表格(二維)。
  • Python數據分析之numpy數組全解析
    1 什麼是numpy2 numpy數組創建2.1 基本方法:np.array()2.2 通用方法:np.ones()、np.zeros()、np.eye()2.3 讀取外部數據3 numpy中數組的數據類型4 numpy中數組的形狀5 索引與切片5.1 按索引取值
  • TEM制樣﹑操作﹑數據分析﹑教程書籍資料大全(附下載)
    1.透射電鏡 PPT講義2.先上傳MSE582的第一課,有興趣的話可以自行進網站在線觀看或下載。附網址MSE582:https://nanohub.org/resources/3777MSE640:https://nanohub.org/resources/40921.原版4卷本《Transmission Electron Microscopy 》透射電鏡的頂級教材!
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    22機器學習 23深度學習 24數據結構和算法 25python網絡爬蟲 26機器學習入門篇 27機器學習入門篇2 28機器學習提升篇 29數據挖掘篇 30深度學習必備原理與實戰 31深度學習必備原理與實戰2 32深度學習必備原理與實戰3
  • Python數據分析類庫系列-Numpy之多維數組ndarray
    你可以利用這種數組對整塊數據執行一些數學運算,其語法跟標量元素之間的運算一樣。 要明白Python是如何利用與標量值類似的語法進行批次計算,我先引入NumPy,然後生成一個包含隨機數據的小數組: import numpy as np data = np.random.randn(2,3)data out:
  • 「百練」成鋼:NumPy 100練
    Python 開源項目 Top100、80+ Python 項目和 100+ 本 Python 免費書等資源。NumPy 經常還與 SciPy(Scientific Python)和 Matplotlib(繪圖庫)一起使用,都是要掌握的必備技能。今天就先從 NumPy 學起。
  • Python學習120課 pandas簡介kaggle下載數據及pandas讀取外部數據
    numpy的基本的東西我們學習差不多了,後面具體應用中遇到問題具體分析,然後去深入了解遇到的新的知識點就行。現在我們開始學習pandas,pandas一般用的更多,pandas是基於numpy去寫的。pandas是一個專門做數據結構和數據分析的庫。
  • 中考化學:67道實驗探究題(附答案),孩子複習必備好資料,可列印
    中考化學:67道實驗探究題(附答案),孩子複習必備好資料,可列印化學這門學科是我們初三階段才會接觸到的一門學科,對於孩子們而言,也是一門比較難學的學科,尤其是關於實驗這塊的的學習,孩子們總是學不好,在考試的時候也丟分不少。
  • 以別墅圖片為例 結合numpy和OpenCV庫 探尋Python中數組組合方式
    前幾篇博文我們介紹了numpy的基礎知識numpy庫學習總結(基礎知識)和numpy中array數組的維度變化Python數據分析必備基本功 numpy數組維度變換的常用方法匯總。今天,我們來梳理一下numpy中數組array的組合操作。
  • 100道練習題,玩轉Numpy模塊!(上)
    來源:和鯨社區https://www.kesci.com/home/project/59f29f67c5f3f5119527a2ccNumpy 是 Python 做數據分析所必須要掌握的基礎庫之一。以下為入門 Numpy 的100題小練習,原為 github 上的開源項目,由和鯨社區的小科翻譯並整理(保留了部分原文作為參考)。受限於篇幅這裡只提供了部分題目的運行結果。
  • 數據分析神操作,第一個操作就跪了!(建議收藏)
    而數據分析能力幾乎已成為每個崗位的必備技能。因此,企業需要大量專業人才來分析挖掘數據的價值,以提升企業利潤。所以市場上才會出現如此巨大的數據人才需求。可以說,數據分析將是每個從業者個人能力最重要的補充,也是BAT這類大公司急招人才的必備技能。
  • 設計必備AI分析圖素材合集!(矢量可編輯文件)
    設計必備AI分析圖素材合集!希望大家會喜歡喜歡的趕緊下載學習吧!領取方式⬇️ ⬇️ ⬇️長按識別下面二維碼回覆:分析圖喜歡的趕緊下載收藏哦在「吾愛分享區」公眾號回覆:分析圖即可免費領取哦~相關閱讀:70套完整多層高層辦公樓CAD建築圖大學生活動中心資料 | 在這裡遇見最美的你(附SU+CAD+文本)