我正在學習Python和numpy,並且對鴨打字的想法很陌生。我正在編寫函數,其中/某人應該傳遞一個numpy數組。試圖接受鴨子打字,我寫我的代碼使用numpy.array
與copy=
和ndmin=
選項將array_likes或1d/0d數組轉換成我需要的形狀。具體來說,我使用ndmin=
選項的情況下,我可以接受(p,p)
陣列或標量;標量可以被編碼爲int
,(1,)
數組,數組(1,1)
,[1]
列表等..numpy.array()拋出的異常(對於最初的可怕標題抱歉)
所以要照顧這個,我使用類似S = numpy.array(S,copy=False,ndmin=2)
獲取數組(如果可能)與正確的ndim
,然後測試我需要的形狀。我知道我應該將它嵌入Try-Except塊中,但是找不到關於可能拋出什麼樣的異常numpy.array()
的任何文檔。因此,我目前只是有這個:
# duck covariance matrix into a 2d matrix
try:
S = numpy.array(S, ndmin = 2, copy=False)
except Exception as e:
raise e
什麼樣的特殊例外(s)我應該嘗試在這裏抓住?謝謝。
只是爲了確保您清楚這一點:1'ndmin'是最小尺寸不是精確的尺寸,結果可能是3D 2.爲什麼在所有的一'嘗試:...'因爲你傳播異常無論如何? (順便說一句,它的ValueError) – seberg
謝謝。我迫使ndmin至少2,然後檢查S.ndim = 2,如果不是,則提出我自己的ValueError。 –
Re。引發錯誤,我會用自己的消息來提出錯誤,比如'raise ValueError(「輸入應該是一個大小爲(p,p)的數組:%s」%EntComp .__ doc __)' –