2017-06-28 149 views
2

我注意到一些numpy操作採用了名爲shape的參數,例如np.zeros,而其他一些參數則採用了size的參數,例如np.random.randint。對我而言,這些論點具有相同的功能,而且它們具有不同的名稱這一點有點令人困惑。實際上,size似乎有點偏離,因爲它確實指定了輸出的.shapenumpy:尺寸與形狀?

是否有不同名稱的原因,它們是否表達了不同的含義,即使它們最終都等於輸出的.shape

+2

我不這麼認爲。其社區發展。它並不總是容易確保一致性。我贊同你。 Shape(在numpy上下文中)對我來說似乎是參數名稱的更好選擇。兩者之間的實際關係是'size = np.prod(shape)',所以在參數名稱中的區別應該更加明顯一些。 – armatita

+0

'randint'使用'size'參數名稱,但在解釋中使用'shape'。這不要與真正的「尺寸」屬性混淆。 – hpaulj

回答

0

Shape涉及N維陣列的尺寸的尺寸。

Size關於陣列,涉及被包含在數組中的元素量(或計數)(或有時,在陣列的頂部尺寸 - 用作長度時)。

例如,讓a是矩陣

1 2 3 4 
5 6 7 8 
9 10 11 12 

a形狀(3, 4),的a大小爲12和a[1]大小爲4。

+2

我認爲OP理解這一點。他/她質疑爭論名稱的選擇。例如,'randint'要求大小(int),但實際上可以帶有元組(它在numpy中通常被解釋爲一個形狀)。 – armatita

1

因爲你有工作numpy數組,看作是一個C數組,size指的是數組的大小。此外,如果您可以通過np.zeros(10)np.zeros((10))。雖然差別很微妙,size通過這種方式會創建一個1D數組。你可以給size=(n1, n2, ..., nn)這將創建一個nD數組。

但是,因爲python用戶需要多維數組,所以array.reshape允許您從1D到nD數組。所以,當你打電話給shape時,你會得到數組的N維形狀,所以你可以看到數組的樣子。

實質上,size等於shape的元素的乘積。

編輯:名稱的差異可歸因於2個部分:首先,您可以初始化您的數組大小。但是,你不知道它的形狀。因此size僅適用於元素的總數。其次,如何開發numpy,不同的人在代碼的不同部分工作,根據他們對代碼的個人願景給出大致相同的元素的不同名稱。