2013-07-14 32 views
0

我正在嘗試減去兩個零排列的numpy陣列a和b。 我希望a-b在尺寸不一樣時返回一個錯誤。例如,如果形狀(a)= [300,]和形狀(b)= [450,]; a-b返回一個形狀數組[300,450]。我會反而喜歡該程序返回一個錯誤。python扣除零排序陣列

+2

「a-b返回一個形狀數組[300,450]」不,它不。你是否得到a和b的形狀錯誤? – user2357112

+2

你確定你甚至在談論零級數組嗎?零級數組'a'具有'a.shape ==()'。 – user2357112

回答

1

你可以試試這個方法:

def mySubtract(a, b): 
    if a is None or b is None or a.shape != b.shape: 
     sys.stderr.write("a and b don't have the same shape!\n") 
     raise ValueError("a and b don't have same shape!") 
    return a-b 

我不知道你所說的「返回錯誤」的意思,但如果你寧願只返回一個無效的結果而不是引發ValueError異常,你可以改爲return Nonereturn "a and b don't have the same shape!"

請記住,例程的調用者需要知道如何處理這些特殊錯誤返回碼。所以一般來說,例外可能是一種更清潔的方法

+0

+1,用於在返回碼上推薦異常 – PaulMcG

+0

不需要'None'檢查。如果你嘗試用'None'做數學運算,那麼這些應該由'TypeError'處理。 – user2357112

0

您可能想查看異常。下面是一些僞代碼應該指向你在正確的軌道上:

if a.size() != b.size(): 
    raise Exception("Invalid sizes") 
+2

我不認爲numpy.array對象包含size()方法,但它確實有一個size屬性。您可以使用a.size而不是a.size(),但是我認爲OP正在尋找a.shape而不是a.size – linguanerd