[英]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
第二對括號表示它是一個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.