最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用numpy生成18種特殊數(shù)組

 更新時間:2023年09月26日 09:45:53   作者:微小冷  
這篇文章主要介紹了python使用numpy生成18種特殊數(shù)組的方法,文章通過代碼示例介紹的非常詳細,對大家的學習或工作有一定的參考價值,需要的朋友可以參考下

所有創(chuàng)建數(shù)組的函數(shù)中,都有一個可選參數(shù) dtype ,表示創(chuàng)建的數(shù)組的數(shù)據(jù)類型。

指定維度empty, eye, identity, ones, zeros, full
模仿維度empty_like, ones_like, zeros_like, full_like
特殊矩陣diag, diagflat, tri, tril, triu, vander
數(shù)值范圍arange, linspace, logspace, geomspace
坐標網(wǎng)格meshgrid, mgrid, ogrid, indices

單值數(shù)組

empty生成指定維度的空數(shù)組。

ones , zeros full 生成所有元素都相同的數(shù)組,顧名思義ones和zeros分別是全1和全0的數(shù)組,而full則可以指定其 fill_value ,例如

np.ones(3)              #生成全1的3x1數(shù)組
np.zeros([2,3])         #生成全0的2x3數(shù)組
x = np.full([2,4], 5)   #生成元素均為5的2x4數(shù)組

_like 為后綴的函數(shù),表示生成一個和輸入數(shù)組維度相同的數(shù)組,以ones為例, np.ones_like(x) 等價于 np.ones(x.shape)

>>> y = np.full_like(x, 6)

特殊矩陣

eye identity 都是生成對角為1,其他元素為0的矩陣,區(qū)別在于, identity 只能生成單位矩陣,即方陣;而 eye 則可以生成行列數(shù)不同的矩陣。 diagflat diag 用于生成對角矩陣,下面用圖像的方式,來表現(xiàn)這四種對角矩陣

在這里插入圖片描述

這些矩陣的生成方式就是每個子圖標題中所顯示的,完整的繪圖代碼附在文末。

diag diagflat 基礎(chǔ)上,還可以提取對角元素,例如

>>> np.diag(np.ones([3,3])) #提取對角元素
array([1., 1., 1.])

tri(M,N,k)用于生成M行N列的三角陣,其元素為0或者1,k用于調(diào)節(jié)01的分界線相對于對角線的位置,下圖中,紅色表示1,藍色表示0.

在這里插入圖片描述

tril, triu 可用于提取出矩陣的左下和右上的三角陣,其輸入?yún)?shù)除了待提取矩陣之外,另一個參數(shù)與 tri 中的 k 相同,把x設(shè)為

x = np.arange(20).reshape(4, 5)

tril triu 作用在x上的效果分別如下,二者分別把右上角和左下角的值變成了0。

在這里插入圖片描述

范德蒙德矩陣

范德蒙德矩陣可表示為

np.vander 可通過給定的 α i \alpha_i αi?生成范德蒙德矩陣,例如

x = np.array([1, 2, 3, 5])y = np.vander(x, increasing=True)

其結(jié)果為

數(shù)值范圍

arange是Numpy中使用頻率超高的一個數(shù)組生成器,其輸入?yún)?shù)可以為一個、兩個或者三個,調(diào)用結(jié)果如下圖,其中橫軸表示生成數(shù)組的下標,縱軸表示值

在這里插入圖片描述

arange 作用相似的函數(shù)是 linspace ,其輸入?yún)?shù)為 np.linspace(a,b,num) ,表示在 a , b a,b a,b之間等間隔生成 num 個數(shù);如果指明 endpoint=False ,則不包含 b b b點。

np.linspace(1,2,5)  # [1.  , 1.25, 1.5 , 1.75, 2.  ]

linspace arange 非常相似,區(qū)別如下

  • linspace(a,b,N) 在 [ a , b ] [a,b] [a,b]中間生成N個值
  • arange(a,b,delta) 在 [ a , b ) [a,b) [a,b)之間,以 d e l t a delta delta為間隔生成值

logspace linspace 邏輯相似,都是在某個區(qū)間內(nèi)等間隔生成數(shù)組,但 logspace 是對數(shù)意義上的等間隔,其等價于 10**np.linspace 。

print(np.logspace(1,2,5))
# [ 10.  17.7827941   31.6227766   56.23413252 100. ]
print(10**np.linspace(1,2,5))
# [ 10.  17.7827941   31.6227766   56.23413252 100. ]

logspace 中的 base 參數(shù),可以指定對數(shù)的底,例如

>>> print(np.logspace(1,2,5,base=2))
[2. 2.37841423 2.82842712 3.36358566 4.]

geomspace 同樣是等間隔生成對數(shù),但和 logspace 的區(qū)別是,同樣在 a,b 區(qū)間內(nèi)生成對數(shù), logspace 生成范圍是 [ 1 0 a , 1 0 b ] [10^a,10^b] [10a,10b], geomspace 的范圍則是 [ a , b ] [a,b] [a,b]。

>>> print(np.geomspace(1,2,5))
[1. 1.18920712 1.41421356 1.68179283 2.]

這種區(qū)別可能過于微妙,畫個圖可能理解起來更加容易

對比如下

在這里插入圖片描述

最后,總結(jié)一下這三個 space 函數(shù)的區(qū)別

  • linspace(a,b,N) 在 [ a , b ] [a,b] [a,b]中間生成N個值
  • logspace(a,b,N,base=c) 在 [ c a , c b ] [c^a, c^b] [ca,cb]之間等指數(shù)間隔生成N個值
  • geomspace(a,b,N,base=c) 在 [ a , b ] [a,b] [a,b]之間,等指數(shù)間隔生成N個值

坐標網(wǎng)格

在三維圖的繪制過程中,一般需要 x , y , z x,y,z x,y,z之間的對應(yīng)關(guān)系,但對于圖像而言,其 x , y x,y x,y軸坐標是體現(xiàn)在像素柵格中的,從而圖像矩陣中的像素強度,其實表示的是 z z z軸的坐標,這種情況下如果想繪制三維散點圖,就需要生成圖像像素對應(yīng)的坐標網(wǎng)格。

Numpy 中,最常用的坐標網(wǎng)格生成函數(shù),就是 meshgrid ,其用法可參考下面的示例

x = [0,1,2,3,4]
y = [0,1,2,3]
xv, yv = np.meshgrid(x, y)

其中

直觀地說,就是對輸入的 x , y x,y x,y變量,分別向 y y y軸和 x x x軸方向進行了擴張。

mgrid meshgrid 更加簡單,可以直接通過魔法函數(shù)生成坐標網(wǎng)格。

>>> xv, yv = np.mgrid[0:2, 2:5]
>>> print(xv)
[[0 0 0]
 [1 1 1]]
>>> print(yv)
[[2 3 4]
 [2 3 4]]

當然,這個維度和步長可以任意選擇,

>>> np.mgrid[1:5]
array([1, 2, 3, 4])
>>> np.mgrid[1:10:5]
array([1, 6])
>>> np.mgrid[1.1:10]
array([1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 8.1, 9.1])

如果翻閱源碼,會發(fā)現(xiàn) mgrid MGridClass() 的一個實例, MGridClass 則是 nd_grid 的一個子類,在 nd_grid 中,實現(xiàn)了 __getitem__ 這個魔法函數(shù),從而達成了 [] 的索引方法。

ogrid 的用法與 mgrid 相同,二者都是 nd_grid 的子類,但生成的數(shù)組不同,直接看案例

>>>x,y = ogrid[0:5,0:5]

其中, x = [ 0 , 1 , 2 , 3 , 4 ] T ,y=[0,1,2,3,4]。

如果想干脆一點,只是生成從0開始的等間隔的坐標網(wǎng)格,那么這里最推薦的是 indices ,這個函數(shù)只需輸入維度,就可以完成網(wǎng)格的創(chuàng)建。

接下來打開一張圖片演示一下

在這里插入圖片描述

import numpy as np
import matplotlib.pyplot as plt
img = plt.imread('test.jpg')
ax = plt.subplot(projection='3d')
gray = img[:,:,1]
yMat, xMat = np.indices(gray.shape)
ax.plot_surface(xMat, yMat, gray)
ax.axis('off')
plt.show()

效果為

在這里插入圖片描述

繪圖代碼

對角矩陣

import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(figsize=(9,3))
ax = fig.add_subplot(141)
ax.imshow(np.identity(5))
plt.title("np.identity(5)")
ax = fig.add_subplot(142)
ax.imshow(np.eye(5,3))
plt.title("np.eye(5,3)")
ax = fig.add_subplot(143)
ax.imshow(np.diagflat([1,2,3]))
plt.title("np.diagflat([1,2,3])")
ax = fig.add_subplot(144)
ax.imshow(np.diag([1,2,3]))
plt.title("np.diag([1,2,3])")
plt.colorbar()
plt.tight_layout()
plt.show()

tri矩陣

fig = plt.figure(figsize=(9,4))
cmap = plt.get_cmap('jet')
for i in range(6):
    ax = fig.add_subplot(2,3,i+1)
    ax.invert_yaxis()
    ax.pcolor(np.tri(4,6,i), edgecolors='k', cmap=cmap)
    plt.title(f"np.tri(4,6,{i})")
plt.tight_layout()
plt.show()

tril和triu

x = np.arange(20).reshape(4, 5)
fig = plt.figure(figsize=(9,4))
ax = fig.add_subplot(121)
ax.invert_yaxis()
ax.imshow(np.tril(x,-1), cmap=cmap)
plt.title(f"np.tril(x,-1)")
ax = fig.add_subplot(122)
ax.invert_yaxis()
ax.imshow(np.triu(x,-1), cmap=cmap)
plt.title(f"np.triu(x,-1)")
plt.tight_layout()
plt.show()

arange

fig = plt.figure(figsize=(9,3))
ax = fig.add_subplot(131)
plt.stem(np.arange(10))
plt.title("np.arange(10)")
ax = fig.add_subplot(132)
plt.stem(np.arange(3,10))
plt.title("np.arange(3,10)")
ax = fig.add_subplot(133)
plt.stem(np.arange(3,10,2))
plt.title("np.arange(3,10,2)")
plt.tight_layout()
plt.show()

logspace和geospace

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(1,2,20)
y = {"logspace" : np.logspace(1,2,20), 
"geomspace" : np.geomspace(1,2,20)}
fig = plt.figure()
for i,key in zip([1,2],y.keys()):
    ax = fig.add_subplot(1,2,i)
    ax.plot(x,y[key],marker="*")
    ax.set_title(key)
plt.show()

以上就是python使用numpy生成18種特殊數(shù)組的詳細內(nèi)容,更多關(guān)于python numpy生成數(shù)組的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 在PyTorch中Tensor的查找和篩選例子

    在PyTorch中Tensor的查找和篩選例子

    今天小編就為大家分享一篇在PyTorch中Tensor的查找和篩選例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python語音識別API實現(xiàn)文字轉(zhuǎn)語音的幾種方法

    Python語音識別API實現(xiàn)文字轉(zhuǎn)語音的幾種方法

    本文主要介紹了Python語音識別API實現(xiàn)文字轉(zhuǎn)語音的幾種方法,文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python教程之生產(chǎn)者消費者模式解析

    Python教程之生產(chǎn)者消費者模式解析

    在并發(fā)編程中使用生產(chǎn)者和消費者模式能夠解決大不多的并發(fā)問題。該模式通過平衡生產(chǎn)線程和消費線程的工作能力來提高程序的整體處理數(shù)據(jù)的速度
    2021-09-09
  • Python實現(xiàn)輕松讀取大文件的技巧揭秘

    Python實現(xiàn)輕松讀取大文件的技巧揭秘

    Python提供了多種方法來讀取文件內(nèi)容,其中包括read()、readline()和readlines()三個常用的函數(shù),本文將深入探討這三個函數(shù)的使用方法,需要的可以參考一下
    2023-08-08
  • 詳解利用裝飾器擴展Python計時器

    詳解利用裝飾器擴展Python計時器

    在本文中,云朵君將和大家一起了解裝飾器的工作原理,如何將我們之前定義的定時器類?Timer?擴展為裝飾器,以及如何簡化計時功能,感興趣的可以了解一下
    2022-06-06
  • Python 操作文件的基本方法總結(jié)

    Python 操作文件的基本方法總結(jié)

    這篇文章主要介紹了Python 操作文件的基本方法總結(jié)的相關(guān)資料,這里說明了九種操作文件的方法,并附上實現(xiàn)方法,需要的朋友可以參考下
    2017-08-08
  • Python實現(xiàn)自動化批量提取PDF中的圖片

    Python實現(xiàn)自動化批量提取PDF中的圖片

    在現(xiàn)代企業(yè)的數(shù)據(jù)工作流中,PDF 文檔不僅是文字的載體,往往還沉淀了大量關(guān)鍵的視覺數(shù)據(jù),本文將探討如何利用 Python 深度解析 PDF 頁面樹,并利用 Spire.PDF for Python 構(gòu)建一個 PDF 圖像提取腳本,希望對大家有所幫助
    2026-02-02
  • python模塊smtplib實現(xiàn)純文本郵件發(fā)送功能

    python模塊smtplib實現(xiàn)純文本郵件發(fā)送功能

    這篇文章主要為大家詳細介紹了python模塊smtplib實現(xiàn)純文本郵件發(fā)送功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • python微元法計算函數(shù)曲線長度的方法

    python微元法計算函數(shù)曲線長度的方法

    今天小編就為大家分享一篇python微元法計算函數(shù)曲線長度的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python sqlite3查詢操作過程解析

    Python sqlite3查詢操作過程解析

    這篇文章主要介紹了Python sqlite3查詢操作過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02

最新評論

三门峡市| 竹溪县| 分宜县| 新巴尔虎左旗| 修水县| 河北区| 拉孜县| 长兴县| 哈尔滨市| 信阳市| 怀化市| 稷山县| 雷波县| 张家口市| 庆阳市| 新龙县| 凉城县| 中牟县| 五家渠市| 读书| 昌宁县| 扶余县| 崇信县| 蒙阴县| 杭锦旗| 江西省| 英吉沙县| 措美县| 会泽县| 陇川县| 喀什市| 南投县| 眉山市| 犍为县| 安吉县| 永宁县| 尼勒克县| 新化县| 庄河市| 大姚县| 舞阳县|