1
我有兩個10x2x2 complex64陣列。我想找到其中的2x2陣列的不是一個或兩個全零:在兩個相同形狀的複雜多維數組中檢查條件
import numpy
a = numpy.zeros((10,2,2), "complex64")
b = numpy.ones((10,2,2), "complex64")
empty_one_or_both = (a.reshape(10,4) != 0).all(axis=1) * (b.reshape(10,4) != 0).all(axis=1) # EDIT
的目標是隻在非空對執行其他操作,如:
numpy.sqrt(a[empty_one_or_both])
有更好的方法?
使用'*'只會匹配那些與兩個矩陣爲零。我想你想'''。 – 2012-04-18 15:14:02
看到編輯,尋找逆向問題,找到哪些不是全都爲零,以至於有一個可用的掩碼。 – Benjamin 2012-04-18 15:34:08
在這種情況下,我肯定更喜歡'&'或'numpy.logical_and()'來代替'*'。結果當然是一樣的,但是當你想表達的是一個邏輯AND似乎有點奇怪時,乘以布爾值。 (除此之外,我想不出任何你可能想要改進的方法,它很直接,很有效率,所以什麼讓你困擾?) – 2012-04-18 15:36:12