欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Numpy中扁平化函數(shù)ravel()和flatten()的區(qū)別詳解

 更新時(shí)間:2023年02月20日 14:51:28   作者:weller  
本文主要介紹了Numpy中扁平化函數(shù)ravel()和flatten()的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在Numpy中經(jīng)常使用到的操作由扁平化操作,Numpy提供了兩個(gè)函數(shù)進(jìn)行此操作,他們的功能相同,但在內(nèi)存上有很大的不同.

先來(lái)看這兩個(gè)函數(shù)的使用:

from numpy import *

a = arange(12).reshape(3,4)
print(a)
# [[ 0 ?1 ?2 ?3]
# ?[ 4 ?5 ?6 ?7]
# ?[ 8 ?9 10 11]]
print(a.ravel())
# [ 0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 10 11]
print(a.flatten())
# [ 0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 10 11]

可以看到這兩個(gè)函數(shù)實(shí)現(xiàn)的功能一樣,但我們?cè)谄綍r(shí)使用的時(shí)候flatten()更為合適.在使用過(guò)程中flatten()分配了新的內(nèi)存,但ravel()返回的是一個(gè)數(shù)組的視圖.視圖是數(shù)組的引用(說(shuō)引用不太恰當(dāng),因?yàn)樵瓟?shù)組和ravel()返回后的數(shù)組的地址并不一樣),在使用過(guò)程中應(yīng)該注意避免在修改視圖時(shí)影響原本的數(shù)組.這是什么意思咧,我們通過(guò)代碼來(lái)具體解釋:

from numpy import *

a = arange(12).reshape(3,4)
print(a)
# [[ 0 ?1 ?2 ?3]
# ?[ 4 ?5 ?6 ?7]
# ?[ 8 ?9 10 11]]

# 創(chuàng)建一個(gè)和a相同內(nèi)容的數(shù)組b
b = a.copy()
c = a.ravel()
d = b.flatten()
# 輸出c和d數(shù)組
print(c)
# [ 0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 10 11]
print(d)
# [ 0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 10 11]
# 可以看到c和d數(shù)組都是扁平化后的數(shù)組,具有相同的內(nèi)容

print(a is c)
# False
print(b is d)
# False
# 可以看到以上a,b,c,d是四個(gè)不同的對(duì)象

# 但因?yàn)閏是a的一種展示方式,雖然他們是不同的對(duì)象,但在修改c的時(shí)候,a中相應(yīng)的數(shù)也改變了
c[1] = 99
d[1] = 99
print(a)
# [[ 0 99 ?2 ?3]
# ?[ 4 ?5 ?6 ?7]
# ?[ 8 ?9 10 11]]
print(b)
# [[ 0 ?1 ?2 ?3]
# ?[ 4 ?5 ?6 ?7]
# ?[ 8 ?9 10 11]]
print(c)
# [ 0 99 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 10 11]
print(d)
# [ 0 99 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 10 11]

通過(guò)以上的分析,在實(shí)際應(yīng)用中應(yīng)盡量使用flatten()函數(shù),這樣避免意外的錯(cuò)誤.

到此這篇關(guān)于Numpy中扁平化函數(shù)ravel()和flatten()的區(qū)別詳解的文章就介紹到這了,更多相關(guān)Numpy ravel()和flatten()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論