簡體   English   中英

如何使用ndim == 0和size == 0創建ndarray?

[英]how to create ndarray with ndim==0 and size==0?

我正在測試程序的一些極端情況,並觀察到一個奇怪的事實。 當我創建一個標量numpy數組時,它的size==1ndim==0

>>> A=np.array(1.0)
>>> A.ndim  # returns 0
>>> A.size  # returns 1

但是,當我創建沒有元素的空數組時,它的size==0ndim==1

>>> A=np.array([])
>>> A.ndim  # returns 1
>>> A.size  # returns 0

這是為什么? 我希望ndim也為0 還是有另一種創建sizendim等於0的“真正”空數組的方法?

更新:即使A=np.empty(shape=None)也不會創建大小為0的A=np.empty(shape=None)量綱數組...

我相信答案是“不,你不能創建一個ndarrayndimsize的零”。 正如您已經發現自己一樣, (1,0)(0,1)(ndim,size)對盡可能低。

這個非常好的答案解釋了很多有關numpy標量類型的信息,以及為什么它們有點奇怪。 這種解釋清楚地表明,像array(1)這樣的標量numpy數組是一種非常特殊的野獸。 它們只有一個值(導致size==1 ),但是根據定義,它們沒有維感,因此ndim==0 另一方面,非標量numpy數組可以為空,但它們至少包含一對方括號,導致最小ndim為1,即使由空列表組成的size可以為0。 (這是我對這種情況的看法: ndarray在某種程度上是...列表列表的列表,在與維度一樣多的層次上ndarray數組與列表兼容,因此一個列表仍然是一個列表,也具有定義維度。)

提出一個空標量的唯一方法是像這樣調用np.array() ,但是只能由某個實際對象初始化數組。 因此,我相信您的程序在這種情況下是安全的。

暫無
暫無

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

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