![](/img/trans.png)
[英]What is the identity of “ndim, shape, size, ..etc” of ndarray in numpy
[英]how to create ndarray with ndim==0 and size==0?
我正在測試程序的一些極端情況,並觀察到一個奇怪的事實。 當我創建一個標量numpy數組時,它的size==1
和ndim==0
。
>>> A=np.array(1.0)
>>> A.ndim # returns 0
>>> A.size # returns 1
但是,當我創建沒有元素的空數組時,它的size==0
但ndim==1
。
>>> A=np.array([])
>>> A.ndim # returns 1
>>> A.size # returns 0
這是為什么? 我希望ndim
也為0
。 還是有另一種創建size
和ndim
等於0
的“真正”空數組的方法?
更新:即使A=np.empty(shape=None)
也不會創建大小為0的A=np.empty(shape=None)
量綱數組...
我相信答案是“不,你不能創建一個ndarray
既ndim
和size
的零”。 正如您已經發現自己一樣, (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.