python numpy 模塊詳細講解及應用案例
博文簡介
- 該博文總共介紹3個常用的numpy方法(array,linspace,arange),同時每個方法都會有一個應用舉例,通過應用舉例來更好地理解和使用這些方法
- 當然numpy還有一些數學上的操作方法,這個就是最熟悉的:
sin(), cos(), log(),tan(),exp(),arctan(),arcsin(),arccos(),cot()等等
大家懂得數學就一定會那些方法了,故在這里就不做介紹了
一、安裝numpy
windows 系統:
1.windows + R 打開控制臺;
2.pip install numpy,
結果如下所示:

二、最常用的方法
1、array方法
1.1 array(numpy.array)功能
生成陣列(可以是一維陣列,二維陣列,甚至更高維度的陣列)
陣列與串列的區別:
陣列必須是同樣的資料型別;
而串列可以是不同資料型別,
在其他方面二者相差無幾,
舉例:
import numpy as np
"""
業界最通用的操作,宣告一個別名np
"""
array_0 = np.array([0, 1, 2, 3, 4])
# 一維陣列
array_1 = np.array([[0, 1, 2, 3],[4, 5, 6, 7]])
# 二維陣列
array_2 = np.array([[[0, 1, 2],[3, 4, 5]],[[6, 7, 8],[9, 10, 11]]])
# 三維陣列
# 更多維度的幾乎不會使用到的
"""
這里注意:
陣列必須是同一個資料型別的元素構成,
所以,當元素的資料型別不同時,
會發生強制準換!!
準換的優先級為:
字串 > 浮點數 > 整型數
例如下面的舉例:
"""
array_3 = np.array([1, 2.23, 4, 5])
# 會強制轉換為浮點數
array_4 = np.array([1, 2.23, 4, 5, 'hello world !'])
# 會強制轉換為字串
# 列印結果
print(array_0)
print(array_1)
print(array_2)
print(array_3)
print(array_4)
運行的結果如下所示(output):
[0 1 2 3 4]
# array_0
[[0 1 2 3]
[4 5 6 7]]
# array_1
[[[ 0 1 2]
[ 3 4 5]]
[[ 6 7 8]
[ 9 10 11]]]
# array_2
[1. 2.23 4. 5. ]
# array_3
['1' '2.23' '4' '5' 'hello world !']
# array_4
總之就是說,numpy.array()是來生成陣列的,其型別為:<class ‘numpy.ndarray’>
(可以通過type()方法來查看),
另外,一個陣列減去一個數字,例如:
array_0 = array_0 - 100
# 每個元素都減一百
意味著陣列中的每一個元素都要減去100!
1.2 array方法的應用舉例(可以處理圖片)
import numpy as np
import matplotlib.pyplot as plt
# 這是一個繪圖專用的模塊,該模塊的介紹將在另一篇博文中進行講述
"""
同樣是業界常用別稱
"""
# 將圖片轉換為一個陣列(三維陣列)
array_img = plt.imread('./圖片名稱')
"""
例如:
array_img = plt.imread('./0065ErDtgy1geehlwnfb6j30p018g435.jpg')
"""
# 相當于是要輸入一個圖片檔案的位置
# 得到的結果是一個三維陣列
# 通過print查看
print(array_img)
# print(type(array_img))
# 利用繪圖模塊展示出來
plt.imshow(array_img)
# 實作一個陣列減去一個數字:
plt.imshow(array_img - 100)
# 加一個數字也可以
plt.imshow(array_img + 200)
運行的結果如下所示(output):
這里我是已經用了一張圖片的, 原圖如下,運行的效果請參見下方的下方:

此處展示圖片:
1、對應于 array_img : (沒有變化)

2、對應于 array_img - 100 :(把可愛的小姐姐變丑了,是我的過錯,嗚嗚嗚~~~)

3、對應于 array_img + 200 :(又一次把小姐姐變丑了,嗚嗚嗚~~~,先說聲對不起~~,但似乎比前一個好一點啦~)

所以呢,其實那些修圖軟體就是將拍攝后的圖片轉換成為陣列,然后通過特定的演算法來實作美顏、瘦身等功能的,
比如:
對于常用的瘦臉功能,我們可以:
1、拍照;
2、識別人臉;
3、將整個圖片轉成陣列;
4、利用特定的演算法來處理人臉所對應的陣列區域;
5、最后,顯示處理后的圖片(即,經過瘦臉后的圖片),
(在這里就不去實作這種復雜的功能了,有興趣的大佬可以自己探索一下哦~)
2、linspace方法
2.1 linspace 方法的功能
linspace 方法的功能是產生一個一維陣列,具體實作是將從起始位置開始到結束位置為止的區間,均勻地產生指定個數的數字,并將這些數字組成一個一維陣列,
import numpy as np
array_0 = np.linspace(-10, 20, 30)
# 第一個引數:起始位置
# 第二個引數:結束為止
# 第三個引數:產生的一維陣列的大小,即指定的數字個數
print(array_0)
輸出結果:(相當于等引數列!!)
[-10. -8.96551724 -7.93103448 -6.89655172 -5.86206897
-4.82758621 -3.79310345 -2.75862069 -1.72413793 -0.68965517
0.34482759 1.37931034 2.4137931 3.44827586 4.48275862
5.51724138 6.55172414 7.5862069 8.62068966 9.65517241
10.68965517 11.72413793 12.75862069 13.79310345 14.82758621
15.86206897 16.89655172 17.93103448 18.96551724 20. ]
(共有30個數字)
2.2 linspace 方法的應用舉例
在這里舉一個繪制影像的例子,繪制一個三維曲線
"""
繪制一個三維的曲線
所繪制的曲線為等距螺旋線
等距螺旋線繪制代碼以及結果如下:
"""
import numpy as np
import matplotlib.pyplot as plt
# 匯入庫函式
fig = plt.figure()
# 建立一個三維坐標系
ax1 = plt.axes(projection='3d')
# 進行三維繪圖
z = np.linspace(-5, 5, 50)
# 使用 linspace 方法定義z坐標
"""
從-5到5的區間,均分為50份進行描點繪圖
描點!!
"""
x = 5 * np.sin(z)
y = 5 * np.cos(z)
# 定義x與y的坐標
ax1.plot3D(x, y, z, 'gray')
# 實作三維圖的繪制
plt.show()
# 顯示繪制的影像結果
結果展示如下所示:


以上便是linspace方法的一個簡單介紹,
3、 arange方法
3.1 arange 方法的功能
產生一個從初始位置開始,到終止位置結束,以特定步長為差值的以為陣列(也相當于等引數列):
import numpy as np
array_0 = np.arange(-10, 10, 2)
# 使用arange方法
# 第一個引數:起始位置
# 第二個引數:終止位置
# 第三個引數:步長
# 列印
print(array_0)
運行結果如下所示:
[-10 -8 -6 -4 -2 0 2 4 6 8]
3.2 arange 方法的應用舉例
在這里我們繪制一張三維空間中的一個曲面影像,具體的代碼實作如下:
"""
前四行代碼與上一個例子相同!!
"""
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax3 = plt.axes(projection='3d')
# 定義x坐標--->生成陣列
x = np.arange(-5, 5, 0.1)
# 定義y坐標--->生成陣列
y = np.arange(-5, 5, 0.1)
# 在這里,生成一個二維的陣列來存放坐標(二維坐標的存放 !!)
# (meshgrid是另一個方法,在這里不多介紹,有興趣可以查閱相關資料來學習,)
X, Y = np.meshgrid(x, y)
# Z 的函式關系式
Z = 10 * np.log(1000 - X ** 2 - Y ** 2)
# 顯示影像,cmap引數是設定圖形的樣式的,rainbow為彩虹狀
ax3.plot_surface(X, Y, Z, cmap='rainbow')
# 別忘了plt.show()!!
plt.show()
運行結果展示如下所示:



總結
綜上所述:
numpy(np) 模塊 的這三種方法就介紹到這里了啦~~~
當然以上介紹是不夠的全面的,想要真正掌握這些模塊,還是應該自己多練習、多實踐,以此來增強自己的技能,此篇僅供大家參考所用~
要是喜歡的話可以點一個贊(么么噠),當然要是不喜歡的話也希望不要踩一下啦~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/265927.html
標籤:python
上一篇:leetcode884. 兩句話中的不常見單詞(你肯定會被驚呆了)
下一篇:抖音視頻資料采集 (2021)
