簡體   English   中英

numpy.array([])和numpy.array([[]])有什么區別?

[英]What is the difference between numpy.array([]) and numpy.array([[]])?

為什么我不能在alpha時獲得轉置但是我可以獲得beta版? 額外的[]做什么?

alpha = np.array([1,2,3,4])
alpha.shape
alpha.T.shape

beta = np.array([[1,2,3,4]])
beta.shape
beta.T.shape

從文檔( 鏈接 ):

轉置1-D數組會返回原始數組的未更改視圖。

陣列[1,2,3,4]是1-D,而陣列[[1,2,3,4]]是1×4 2-D陣列。

第二對括號表示它是一個2D數組,因此對於這樣的數組,轉置數組與第一個數組不同(因為轉置切換了2個維度)。 但是,如果數組只有1D,則轉置不會改變任何內容,結果數組等於起始數組。

alpha是一維數組,轉置本身。

beta是一個2D數組,因此您可以將(1,n)(n,1)

要對alpha執行相同操作,您需要添加維度,不需要轉置它:

alpha[:, None]

alpha是具有形狀(4,)的一維數組。 轉置只是alpha ,即alpha == alpha.T

beta是具有形狀(1,4)的2D陣列。 它是一行,但它有兩個維度。 它的轉置看起來像一個有形狀的柱子(4,1)。

當我到達編程語言世界時,來自“業務的數學方面”,這對我來說似乎也很奇怪。 在考慮了一下后,我意識到從編程的角度來看,它們是不同的。 看看下面的列表:

a = [1,2,3,4,5]

這是一維結構。 這是如此,因為要獲取值1,2,3,4和5,您只需要分配一個地址值。 如果您發出了命令a [2],則會返回3。

現在看看這個列表:

b = [[ 1,  2,  3,  4,  5],
     [11, 22, 33, 44, 55]]

例如,要獲得11,你需要兩個位置編號,1因為11位於第二個列表中而0是因為在第二個列表中它位於第一個位置。 換句話說,b [1,0]給你回報11。

現在來了訣竅部分。 看看第三個清單:

c = [ [ 100, 200, 300, 400, 500] ]

如果仔細觀察,每個數字需要從列表中取回2個位置編號。 300例如需要0,因為它位於第一個(也是唯一的)列表中,因為它是第一個列表的第三個元素。 c [0,2]讓你回到300。

此列表可以轉置,因為它有兩個維度,轉置操作是切換位置參數的東西。 所以cT會給你一個形狀為[5,1]的列表,因為c的形狀為[1,5]。

回到列表a。 那里有一個只有一個位置編號的列表。 該列表的形狀僅為[5],因此沒有第二個位置參數可供使用的轉置操作。 因此它仍然[5],如果你嘗試aT,你會得到一個。

得到它了?

最好的祝福,

古斯塔沃,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM