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

詳解如何利用Numpy生成各種各樣的數(shù)組

 更新時(shí)間:2023年07月30日 16:28:41   作者:歐陽(yáng)豐園  
Numpy提供了多種函數(shù)和方法,可以方便地生成不同形狀和類型的數(shù)組,今天小編就帶大家學(xué)習(xí)一下如何利用?Numpy?生成各種各樣的數(shù)組吧

現(xiàn)在我們對(duì) Numpy 有了基本的了解,利用 Numpy 能夠幫助我們提高計(jì)算效率,利用 Numpy 的 ndarray 多維數(shù)組對(duì)象存儲(chǔ)數(shù)據(jù)能夠減少內(nèi)存占用,Numpy 的這些優(yōu)勢(shì)使得它廣泛應(yīng)用于人工智能、計(jì)算機(jī)視覺、生物信息等領(lǐng)域。 使用Numpy進(jìn)行數(shù)據(jù)處理和科學(xué)計(jì)算時(shí),生成各種類型的數(shù)組是非常常見的需求,有的需要全 0 數(shù)組,有的需要滿足正態(tài)分布的數(shù)組。Numpy提供了多種函數(shù)和方法,可以方便地生成不同形狀和類型的數(shù)組。今天我就帶大家學(xué)習(xí)一下如何利用 Numpy 生成各種各樣的數(shù)組。

生成 0 和 1 的數(shù)組

我們知道在圖像處理中,我們通常是借助矩陣來(lái)表示圖片的顏色,全 0 數(shù)組表示黑色,全 1 數(shù)組表示白色;在數(shù)據(jù)處理過程中,有時(shí)也需要借助全 0 或全 1 數(shù)組表示邊界條件和權(quán)重。

下面我們就來(lái)看看如何利用 Numpy 生成一個(gè)全 0 或全 1 數(shù)組吧!

zeros 方法創(chuàng)建全 0 數(shù)組

我們先來(lái)學(xué)習(xí)一下如何生成一個(gè)全 0 數(shù)組吧!

比如在植物大戰(zhàn)僵尸中,游戲開始時(shí),草坪上沒有植物,這時(shí)我們便可以通過一個(gè)全 0 數(shù)組代表草坪的初始狀態(tài)?,F(xiàn)在我們需要初始化一個(gè)六行八列的草坪,該如何實(shí)現(xiàn)呢?

代碼示例:

import numpy as np  
zeroArry=np.zeros((6,8))  
print(zeroArry)

輸出結(jié)果:

[[0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0.]]

可以看見在利用 zeros 方法創(chuàng)建一個(gè)全 0 數(shù)組時(shí),我們只需要傳入所需數(shù)組的形狀便可以創(chuàng)建出所需形狀的全 0 數(shù)組。

學(xué)習(xí)完了如何創(chuàng)建全 0 數(shù)組,下面我們?cè)賮?lái)看看如何創(chuàng)建全 1 數(shù)組吧!

ones 方法創(chuàng)建全 1 數(shù)組

全 1 數(shù)組與全 0 數(shù)組的作用基本相同,同樣也可以用于數(shù)據(jù)的初始化。比如,掃雷游戲,開始時(shí)整個(gè)地圖我們都沒有查看過,這時(shí)我們便可是設(shè)置一個(gè)全 1 數(shù)組表示這一初始狀態(tài),現(xiàn)在我們要初始化一個(gè)四行三列的地圖該如何處理呢?

代碼示例:

import numpy as np  
oneArry=np.ones((3,4))  
print(oneArry)

輸出結(jié)果:

[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]

同創(chuàng)建全 0 數(shù)組一樣,我們只需傳入所需數(shù)組的形狀即可創(chuàng)建所需形狀的全 1 數(shù)組。我們可以看到,不管是 0 填充還是 1 填充,默認(rèn)的數(shù)據(jù)類型都是為浮點(diǎn)數(shù),這值得我們注意。

同時(shí)在一些情況下,我們可能需要預(yù)先分配足夠的空間以容納即將到來(lái)的數(shù)據(jù)時(shí),這時(shí)我們就需要?jiǎng)?chuàng)建一個(gè)未初始化的空數(shù)組來(lái)完成,那么如何才能創(chuàng)建一個(gè)指定形狀的空數(shù)組呢?

empty 方法創(chuàng)建未初始化數(shù)組

empty 方法是用來(lái)創(chuàng)建一個(gè)指定形狀、指定數(shù)據(jù)類型并且未初始化的數(shù)組。未初始化指的就是對(duì)于其中的數(shù)據(jù)并沒有被指定填充值。

比如,在實(shí)驗(yàn)中我們還并未知曉實(shí)驗(yàn)數(shù)據(jù),但需要提前分配一個(gè)三行四列的地址空間,該如何處理呢?代碼示例:

import numpy as np  
emptyArry=np.empty((3,4))  
print(emptyArry)

輸出結(jié)果:

[[6.23042070e-307 4.67296746e-307 1.69121096e-306 4.67293691e-307]
 [2.22518251e-306 1.60218491e-306 1.37962320e-306 1.78019354e-306]
 [2.22522597e-306 1.33511969e-306 1.15711378e-306 1.16826224e-307]]

可以看到其中會(huì)出現(xiàn)數(shù)據(jù),我們之前不是說(shuō)沒有指定填充值嗎,這里為什么又會(huì)出現(xiàn)值呢?這其實(shí)不難理解,未初始化并不代表沒有值,為了程序的安全,未初始化的變量程序會(huì)根據(jù)編譯器的設(shè)置填充一些值,比如這里的隨機(jī)值。

此外,在數(shù)學(xué)中,特別是在物理中,我們知道一些數(shù)據(jù)都是存在一些規(guī)律的,在進(jìn)行一些模擬驗(yàn)證時(shí)也是需要這樣一些具有規(guī)律的數(shù)據(jù),用鍵盤一個(gè)一個(gè)輸入這些數(shù)據(jù)往往是不現(xiàn)實(shí)的,NumPy 作為科學(xué)計(jì)算的利器,也是將這類數(shù)據(jù)考慮其中,建立相對(duì)應(yīng)的方法。比如:我們想要?jiǎng)?chuàng)建一個(gè)對(duì)角矩陣該如何處理呢?

eye 方法創(chuàng)建對(duì)角數(shù)組

線性代數(shù)的對(duì)角矩陣(首先數(shù)組是方陣,即 n×n,其次是對(duì)角線全為 1,其余位置都為 0),由于對(duì)角矩陣具有特殊的性質(zhì),能夠簡(jiǎn)化運(yùn)算,所以在計(jì)算時(shí)用到的時(shí)候很多,NumPy 當(dāng)然也不會(huì)放過這個(gè)特殊的矩陣,創(chuàng)造了 eye() 函數(shù)來(lái)創(chuàng)建對(duì)角矩陣。

比如,我們要?jiǎng)?chuàng)建一個(gè)五行五列的對(duì)角矩陣該如何處理呢?

代碼示例:

import numpy as np  
eyeArry=np.eye(5)  
print(eyeArry)

輸出結(jié)果:

[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]

可以看見,利用 eye 方法我們成功創(chuàng)建了對(duì)角矩陣并且默認(rèn)數(shù)據(jù)類型為浮點(diǎn)型。

到這里,利用 Numpy 創(chuàng)建一些特殊的矩陣我們就介紹完了,下面我們?cè)賮?lái)看看如何利用已有數(shù)組生成新數(shù)組呢?

從現(xiàn)有數(shù)組中生成新數(shù)組

利用現(xiàn)有數(shù)組生成新數(shù)組的方式大概有三種方法,分別為 array 方法、asarray 方法以及 copy 方法。下面我們就來(lái)看看如何利用這三種方法生成新數(shù)組吧!

array 方法

首先我們先來(lái)看看 array 方法,看看如何借此方法生成新數(shù)組。

方法:numpy.array(object,dtype,shape)

  • object 為要轉(zhuǎn)化為 Numpy 數(shù)組的數(shù)據(jù)對(duì)象,可以為列表、元組或者數(shù)組;
  • dtype 為轉(zhuǎn)化后數(shù)組的數(shù)據(jù)類型,若不設(shè)置則與原數(shù)據(jù)對(duì)象的數(shù)據(jù)類型保持一致;
  • shape 用于指定數(shù)組的形狀,若不設(shè)置則與原數(shù)據(jù)對(duì)象的 shape 相同。

下面我們就來(lái)看看如何利用 array 方法生成新數(shù)組。

代碼示例:

import numpy as np  
arr1=np.array([1,2,3,4,5])  
arr2=np.array(arr1)  
print(arr2)

輸出結(jié)果:

[1 2 3 4 5]

可以看見,我們利用 array 方法,成功借助 arr1 數(shù)組生成了 arr2 這個(gè)新數(shù)組,新數(shù)組的數(shù)據(jù)與原數(shù)組相同,數(shù)據(jù)類型也相同。下面我們?cè)賮?lái)看看如何利用 asarray 方法生成新數(shù)組。

asarray 方法

方法:numpy.asarray(object,dtype)

  • object 為要轉(zhuǎn)化為 Numpy 數(shù)組的數(shù)據(jù)對(duì)象,可以為列表、元組或者數(shù)組;
  • dtype 為轉(zhuǎn)化后數(shù)組的數(shù)據(jù)類型,若不設(shè)置則與原數(shù)據(jù)對(duì)象的數(shù)據(jù)類型保持一致。

下面我們就來(lái)看一下如何利用 asarray 函數(shù)生成新數(shù)組吧!

代碼示例:

import numpy as np  
arr1=np.array([1,2,3,4,5])  
arr3=np.asarray(arr1)  
print(arr3)

輸出結(jié)果:

[1 2 3 4 5]

可以看見,借助 asarray 方法我們也成功生成了新數(shù)組。下面我們?cè)賮?lái)看看如何利用 copy 方法生成新數(shù)組呢!

copy 方法

方法:numpy.copy(object)

object 為要?jiǎng)?chuàng)建副本的數(shù)據(jù)對(duì)象,可以為列表、元組或者數(shù)組。

下面我們就來(lái)看看如何利用 copy 函數(shù)生成新的數(shù)組吧!

代碼示例:

import numpy as np  
arr1=np.array([1,2,3,4,5])  
arr4=np.copy(arr1)  
print(arr4)

輸出結(jié)果:

[1 2 3 4 5]

通過觀察以上三個(gè)案例,我們發(fā)現(xiàn)它們生成新數(shù)組的操作是基本相同的,但是它們是否有什么區(qū)別呢?下面我們就通過個(gè)案例帶領(lǐng)大家了解。

當(dāng)我們用原數(shù)組生成新數(shù)組后,對(duì)原數(shù)組進(jìn)行修改新數(shù)組是否會(huì)改變呢?讓我們來(lái)一起看看吧!

代碼示例:

import numpy as np  
arr1=np.array([1,2,3,4,5])  
arr2=np.array(arr1)  
arr3=np.asarray(arr1)  
arr4=np.copy(arr1)  
arr1[0]=100  
print('更改后arr2為:',arr2)  
print('更改后arr3為:',arr3)  
print('更改后arr4為:',arr4)

輸出結(jié)果:

更改后arr2為: [1 2 3 4 5]
更改后arr3為: [100   2   3   4   5]
更改后arr4為: [1 2 3 4 5]

可以看見,對(duì)原數(shù)組的第一個(gè)數(shù)據(jù)進(jìn)行修改之后,利用 array 和 copy 方法生成的新數(shù)組并沒有被修改,而利用 asarray 方法生成的新數(shù)組則發(fā)生了同樣的改變。

當(dāng)涉及Numpy數(shù)組的復(fù)制和創(chuàng)建新數(shù)組時(shí),了解array、copy和asarray方法之間的區(qū)別是很重要的。它們?cè)谏尚聰?shù)組時(shí)有不同的行為和影響,主要區(qū)別如下:

array方法:

行為:array方法創(chuàng)建原始數(shù)組的副本,即進(jìn)行深拷貝。

影響:生成的新數(shù)組與原始數(shù)組完全獨(dú)立,修改新數(shù)組不會(huì)影響原始數(shù)組,新數(shù)組和原數(shù)組在內(nèi)存中擁有不同的地址。

copy方法:

行為:copy方法創(chuàng)建原始數(shù)組的副本,同樣進(jìn)行深拷貝。

影響:生成的新數(shù)組與原始數(shù)組完全獨(dú)立,修改新數(shù)組不會(huì)影響原始數(shù)組,新數(shù)組和原數(shù)組在內(nèi)存中擁有不同的地址。

asarray方法:

行為:asarray方法創(chuàng)建原始數(shù)組的視圖,即進(jìn)行淺拷貝。如果原始數(shù)組是Numpy數(shù)組,則不會(huì)復(fù)制數(shù)據(jù),而只是共享相同的數(shù)據(jù)存儲(chǔ)。如果原始數(shù)組是普通的Python列表或元組,則會(huì)復(fù)制數(shù)據(jù)。

影響:生成的新數(shù)組與原始數(shù)組共享相同的數(shù)據(jù)存儲(chǔ),修改新數(shù)組將會(huì)影響原始數(shù)組。新數(shù)組和原數(shù)組在內(nèi)存中具有相同的地址,但數(shù)據(jù)是否共享取決于原始數(shù)組的類型。

它們?nèi)叩膮^(qū)別在于生成的新數(shù)組和原始數(shù)組在內(nèi)存中的關(guān)系以及是否共享數(shù)據(jù)存儲(chǔ)。如果需要?jiǎng)?chuàng)建完全獨(dú)立的數(shù)組,應(yīng)使用array或copy方法。如果需要共享數(shù)據(jù)存儲(chǔ)或希望節(jié)省內(nèi)存,可以考慮使用asarray方法。

由此,我們知道:array 和 copy 方法生成的是原數(shù)組的副本,是對(duì)原數(shù)組進(jìn)行的深拷貝,新數(shù)組的內(nèi)存地址與原數(shù)組是不同的;asarray 是對(duì)原數(shù)組進(jìn)行的淺拷貝,它是原數(shù)組的視圖,新數(shù)組的內(nèi)存地址與原數(shù)組的內(nèi)存地址是相同的。

下面我們就來(lái)學(xué)習(xí)生成數(shù)組的另一種方法——生成固定范圍的數(shù)組。

生成固定范圍的數(shù)組

生成固定的數(shù)組即生成包含我們所需范圍內(nèi)的數(shù)據(jù)的數(shù)組,主要有兩種方法分別為 linspace 方法arange 方法。

linspace 方法

方法:linspace(start,stop,num)

  • start 為數(shù)據(jù)的起始點(diǎn)。
  • stop 為數(shù)據(jù)的結(jié)束點(diǎn)。
  • num 為等步長(zhǎng)生成的數(shù)據(jù)量。

下面我們就利用該方法生成一個(gè)數(shù)組,起始點(diǎn)為 0,結(jié)束點(diǎn)為 100,數(shù)據(jù)量為 5 的數(shù)組吧!

代碼示例:

import numpy as np  
arr=np.linspace(0,100,5)  
print(arr)

輸出結(jié)果:

[  0.  25.  50.  75. 100.]

可以看見,我們成功得到了一個(gè)數(shù)據(jù)量為 5 的等距數(shù)組,默認(rèn)數(shù)據(jù)類型為浮點(diǎn)型。同時(shí),我們可以看見生成的數(shù)組是包括了我們?cè)O(shè)置的數(shù)據(jù)范圍的邊界的,我們可以簡(jiǎn)記為“左閉右閉”原則。在數(shù)學(xué)上,如果我們需要生成一定范圍內(nèi)的指定數(shù)據(jù)量的等距數(shù)組時(shí)便可以通過該方法獲取

下面我們?cè)賮?lái)看看如何利用 arange 生成指定范圍的數(shù)組吧!

arange 方法

方法:arange(start,stop,step,dtype)

  • start 為數(shù)據(jù)起始點(diǎn)。
  • stop 為數(shù)據(jù)終點(diǎn)。
  • step 為數(shù)據(jù)之間的步長(zhǎng),默認(rèn)為 1。
  • dtype 用于指定數(shù)組的數(shù)據(jù)類型,默認(rèn)為浮點(diǎn)型。

下面我們就來(lái)通過該方法生成一個(gè)范圍 0-100、數(shù)據(jù)步長(zhǎng)為 5 的等差數(shù)列吧!

代碼示例:

import numpy as np  
arr=np.arange(0,100,5)  
print(arr)

輸出結(jié)果:

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

可以看見,利用 arange 函數(shù),我們能夠生成一定數(shù)據(jù)范圍內(nèi)的等差數(shù)列,我們發(fā)現(xiàn)該方法生成的數(shù)組的數(shù)據(jù)類型為整型,并且并沒有包括邊界值,我們可以簡(jiǎn)記為“左閉右開”。在處理數(shù)學(xué)問題時(shí),我們可以借助該方法生成一定數(shù)據(jù)范圍內(nèi)的等差數(shù)列。

通過上述兩個(gè)案例,我們可以發(fā)現(xiàn):linspace 方法用于生成一定數(shù)據(jù)范圍內(nèi)的所需數(shù)據(jù)量的數(shù)組,默認(rèn)數(shù)據(jù)類型為浮點(diǎn)型,生成的數(shù)據(jù)包括數(shù)據(jù)邊界;arange 方法用于生成一定范圍內(nèi)的指定步長(zhǎng)的等差數(shù)列,默認(rèn)數(shù)據(jù)類型為整型,生成的數(shù)據(jù)不包括數(shù)據(jù)邊界。

學(xué)習(xí)了生成固定范圍的數(shù)組,下面我們?cè)賮?lái)學(xué)習(xí)一下如何生成隨機(jī)的數(shù)組吧!

生成隨機(jī)數(shù)組

當(dāng)我們處理大量數(shù)據(jù)或需要進(jìn)行隨機(jī)實(shí)驗(yàn)時(shí),隨機(jī)數(shù)組是不可或缺的工具。

隨機(jī)數(shù)組是指由隨機(jī)數(shù)組成的數(shù)組,它廣泛應(yīng)用于各種領(lǐng)域,例如統(tǒng)計(jì)學(xué)、數(shù)據(jù)分析、模擬、游戲開發(fā)等。例如:在角色扮演游戲中,我們可以使用隨機(jī)數(shù)組生成隨機(jī)的戰(zhàn)斗傷害、經(jīng)驗(yàn)值或掉落物品,以增加游戲的趣味性和可玩性;在電路模擬中,我們可以使用隨機(jī)數(shù)組生成隨機(jī)的噪聲信號(hào),以評(píng)估電路的性能和穩(wěn)定性。

在利用 Numpy 生成隨機(jī)數(shù)組時(shí),我們需要借助 random 模塊。NumPy 的 random 模塊提供了一個(gè)用于生成隨機(jī)數(shù)的強(qiáng)大工具集。它包含了各種函數(shù)和類,可以用于生成不同類型的隨機(jī)數(shù),如整數(shù)、浮點(diǎn)數(shù)和隨機(jī)數(shù)組,此外還可以用于生成符合各種概率分布的數(shù)組。

下面我們就來(lái)看看如何利用 Numpy 的 random 模塊生成符合各種概率分布的數(shù)組吧!

均勻分布隨機(jī)數(shù)組

生成均勻分布隨機(jī)數(shù)組主要有 rand 方法和 uniform 兩種方法。

首先我們來(lái)看看如何利用 random 生成符合均勻分布的隨機(jī)數(shù)組呢。

rand 方法

rand 用于生成 0-1 區(qū)間內(nèi)指定數(shù)量的均勻分布的隨機(jī)數(shù)組。

方法:rand(shape,dtype)

  • shape 為數(shù)組的形狀。
  • dtype 為數(shù)組的數(shù)據(jù)類型,默認(rèn)為浮點(diǎn)型。

比如,在游戲中,要求擊殺野怪后會(huì)爆 15 個(gè)裝備之一,我們便可以利用 rand 方法生成一個(gè)數(shù)值范圍 0-1 的符合均勻分布的大小為 15 的數(shù)組來(lái)表示各個(gè)裝備出現(xiàn)的概率。

代碼示例:

import numpy as np  
arr=np.random.rand(15)  
print(arr)****

輸出結(jié)果:

[0.62143845 0.12778872 0.87422787 0.95940872 0.66958581 0.15454008
 0.76071261 0.15836626 0.77351804 0.87778616 0.20672373 0.85318471
 0.98831228 0.21829142 0.83702802]

可以看見,我們成功得到了數(shù)據(jù)量為 15 符合均勻分布的裝備概率數(shù)組,據(jù)此來(lái)決定刷怪后出現(xiàn)什么裝備。不過該方法的缺點(diǎn)就是只能生成數(shù)據(jù)范圍 0-1 內(nèi)的均勻分布數(shù)組。

下面我們?cè)賮?lái)看看 uniform 有什么不同呢。

uniform 方法

uniform 方法用于生成指定范圍內(nèi)的均勻分布的數(shù)組,相較于 rand 方法更為靈活。

方法:uniform(low,high,size)

  • size 為數(shù)組的形狀。
  • low 為隨機(jī)數(shù)的最小值。
  • high 為隨機(jī)數(shù)的最大值。

比如:我們?cè)谟螒蛑?,往往?huì)遇到吃一個(gè)果子既可能中毒減少血量,也可能治療增加血量,這時(shí)候我們就可以利用該函數(shù)實(shí)現(xiàn)。比如最大減血量為 100,最大加血量為 100,怎樣得到這個(gè)范圍內(nèi)的隨機(jī)數(shù)呢?

代碼示例:

import numpy as np  
arr=np.random.uniform(-100,100,1)  
print(arr)

輸出結(jié)果:

[18.41991632]

可以看見,該結(jié)果就代表給玩家增加 18.41991632 的血量。通過案例,我們知道利用 uniform 生成均勻分布的隨機(jī)數(shù)組要更為靈活,它除了可以生成 0-1 內(nèi)的均勻分布數(shù)組外,還可以生成其他范圍內(nèi)的均勻分布數(shù)組。

下面我們?cè)賮?lái)學(xué)習(xí)一下如何生成一組符合正態(tài)分布的數(shù)組呢。

正態(tài)分布隨機(jī)數(shù)組

生成正態(tài)分布數(shù)組的方法組要有兩種,分別為 normal 方法和 standard_normal 方法。

下面我們就先從 normal 方法開始看看如何利用這些方法生成正態(tài)分布的數(shù)組。

normal 方法

方法:normal(loc,scale,size)。

  • loc 為正態(tài)分布數(shù)組的均值,
  • scale 為數(shù)組的方差,
  • 通過 size 屬性我們能夠設(shè)置數(shù)組的形狀或者數(shù)據(jù)量。

通常一個(gè)班級(jí)同學(xué)的成績(jī)是符合正態(tài)分布的,下面我們就用 normal 模擬一個(gè)班級(jí)的期末成績(jī),其中均值為 60,方差為 81,學(xué)生人數(shù)為 20 人。

代碼示例:

import numpy as np  
score=np.random.normal(60,9,20)  
print(score)

輸出結(jié)果:

[61.06296251 62.24716851 60.59643633 61.66150912 54.31424568 50.0636896
 85.25668733 65.97137913 74.13954099 59.70926632 32.06950931 55.49741382
 67.09152988 52.56268941 44.34325786 58.75831326 68.99711559 58.05501051
 52.57707606 61.42147338]

可以看見,利用上述方法我們成功生成了一組符合正態(tài)分布的學(xué)生成績(jī)。normal 方法的優(yōu)點(diǎn)就在于非常靈活,我們可以根據(jù)自己需求設(shè)置數(shù)組的方差和均值

下面我們?cè)賮?lái)看看如何利用 standard_normal 方法生成正態(tài)分布數(shù)組吧!

standard_normal 方法

利用 standard_normal 方法用于生成指定形狀的符合標(biāo)準(zhǔn)正態(tài)分布的數(shù)組,該方法與 normal 方法相比不是很靈活,但是參數(shù)較少,我們只需要指定數(shù)組形狀便可以生成指定形狀的標(biāo)準(zhǔn)正態(tài)分布的數(shù)組。

方法:standard_normal(size)

size 為隨機(jī)數(shù)組的形狀。

在機(jī)器學(xué)習(xí)中,生成一組符合標(biāo)準(zhǔn)正態(tài)分布的數(shù)組可以用于初始化模型的參數(shù),特別是對(duì)于需要隨機(jī)初始化的算法,例如隨機(jī)梯度下降等。通過將參數(shù)初始化為標(biāo)準(zhǔn)正態(tài)分布,可以幫助模型更好地收斂到最優(yōu)解,并提高模型的性能和準(zhǔn)確性。

下面我們就生成一個(gè)形狀為三行四列的符合標(biāo)準(zhǔn)正態(tài)分布的數(shù)組,用于實(shí)現(xiàn)模型參數(shù)的初始化。

代碼示例:

import numpy as np  
arr=np.random.standard_normal((3,4))  
print(arr)

輸出結(jié)果:

[[-0.05899553 -1.0534277  -1.18875175  0.91898097]
 [-0.58510129  2.3321576   1.00022868 -0.11486971]
 [ 3.02941126 -0.72335555  0.71833573 -0.30375334]]

可以看見我們成功生成了標(biāo)準(zhǔn)正態(tài)分布的二維數(shù)組。

學(xué)習(xí)生成隨機(jī)數(shù)組能夠幫助我們更好地解決生活中遇到的隨機(jī)問題,通過 Numpy 生成符合要求的數(shù)組,進(jìn)而隨機(jī)情況。

到這里,如何利用 Numpy 生成各種各樣的數(shù)組我們就介紹完成了,大家可以仔細(xì)學(xué)習(xí)相關(guān)方法,因?yàn)?Numpy 的一切數(shù)據(jù)處理方法都是在創(chuàng)建的數(shù)組上進(jìn)行應(yīng)用的。

總結(jié)

Numpy 的 ndarray 數(shù)組對(duì)象是 Numpy 最為核心的數(shù)據(jù)對(duì)象,Numpy 的一切數(shù)據(jù)處理方法都是在 ndarray 對(duì)象上應(yīng)用的,所以學(xué)習(xí)創(chuàng)建 ndarray 數(shù)組非常重要。

在圖片處理等領(lǐng)域,我們可以利用 zeros 和 ones 函數(shù)生成全 1 或全 0 數(shù)組來(lái)代表黑色圖片以及白色圖片。在處理一些物理問題時(shí),往往需要借助一些特殊的矩陣,這時(shí)我們可以借助 eye 方法生成符合要求的對(duì)角矩陣。當(dāng)我們需要為數(shù)據(jù)預(yù)先分配內(nèi)存時(shí),可以借助 empty 生成空數(shù)組,對(duì)內(nèi)存空間進(jìn)行預(yù)分配。

利用已有數(shù)組生成新數(shù)組時(shí),array 和 copy 方法生成的是原數(shù)組的副本,是對(duì)原數(shù)組進(jìn)行的深拷貝,新數(shù)組的內(nèi)存地址與原數(shù)組是不同的;asarray 是對(duì)原數(shù)組進(jìn)行的淺拷貝,它是原數(shù)組的視圖,新數(shù)組的內(nèi)存地址與原數(shù)組的內(nèi)存地址是相同的。

如果想要生成指定個(gè)數(shù)的等距數(shù)組,我們可以使用 linspace 方法,要注意該方法生成的數(shù)組是包括邊界值的;如果想要設(shè)置數(shù)據(jù)之間的步長(zhǎng),我們可以借助 arange 方法,該方法生成的數(shù)組是不包括邊界值的。

在處理概率論問題時(shí),如果想要生成均勻分布的數(shù)組,我推薦大家使用 uniform 方法,該方法能夠指定數(shù)據(jù)范圍,使用起來(lái)相對(duì)靈活;如果想要生成符合正態(tài)分布的數(shù)組,我推薦大家使用 normal 方法,利用該方法我們能夠指定數(shù)組的方差和均值,使用起來(lái)也比較靈活,既可以生成符合標(biāo)準(zhǔn)正態(tài)分布的數(shù)組,也可以生成符合其他類型的正態(tài)分布的數(shù)組。

以上就是詳解如何利用Numpy生成各種各樣的數(shù)組的詳細(xì)內(nèi)容,更多關(guān)于Numpy數(shù)組的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章

相關(guān)文章

最新評(píng)論