簡體   English   中英

numpy廣播

[英]Broadcasting in numpy

我剛剛開始學習numpy,並通過numpy的scipy教程進行學習。 我的問題與廣播何時發生有關。

如本教程中所建議,如果兩個數組滿足某些條件,則它們是兼容的,例如:

  1. 他們是平等的
  2. 其中之一是1

我的問題是,假設我有以下兩個數組:

import numpy as np

c1 = np.arange(10).reshape(2,5)
c2 = np.arange(8).reshape(2,4,1)
c3 = c1-c2

但是上面的操作給了我兼容/廣播錯誤,如下所示:

ValueError: operands could not be broadcast together with shapes (2,5) (2,4,1)

當我用筆和紙示意性地表示這兩個數組時,我無法執行該操作,但是我無法從上述教程中了解到如何無法在數組上成功執行該操作。 請幫助我理解。

我知道這是基本的知識,但這對我的理解會有所幫助。

問候

這是確定是否可以廣播兩個數組的過程:將形狀與右對齊對齊:

  2 5
2 4 1

在左側加1,以使兩個形狀的軸數相同(如下所示,以列表示):

1 2 5
2 4 1

現在,比較各列。 為了使廣播正常工作,每列中的值必須相同或其中一個值必須等於1。

在第二列中,2不等於4,因此無法進行廣播。 (在第一和第三列中,“ 1”使那些軸與廣播兼容,但是由於第二列,整個陣列無法廣播。)

暫無
暫無

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

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