以下のように、numpy 配列をゼロで初期化します。
np.zeros((N,N+1))
しかし、指定された n*n numpy 配列行列のすべての要素がゼロかどうかを確認するにはどうすればよいでしょうか。
すべての値が実際にゼロの場合、メソッドは True を返す必要があります。
ここに投稿された他の回答は機能しますが、使用する最も明確で最も効率的な機能は次のnumpy.any()
とおりです。
>>> all_zeros = not np.any(a)
また
>>> all_zeros = not a.any()
numpy.all(a==0)
RAM の使用量が少ないため、これよりも優先されます。(用語によって作成された一時配列は必要ありませんa==0
。)numpy.count_nonzero(a)
また、最初の非ゼロ要素が見つかったときにすぐに戻ることができるため、より高速です。np.any()
「短絡」ロジックを使用しなくなったため、小さな配列の速度の利点は見られません。numpy.count_nonzeroをチェックしてください。
>>> np.count_nonzero(np.eye(4))
4
>>> np.count_nonzero([[0,1,7,0,0],[3,0,0,2,19]])
5
配列がある場合は、ここで np.all を使用します。
>>> np.all(a==0)
これは機能します。
def check(arr):
if np.all(arr == 0):
return True
return False
別の numpy 関数での警告を回避するためにすべてのゼロをテストしている場合は、行を try でラップします。ただし、ブロックを除いて、関心のある操作の前にゼロのテストを行う必要がなくなります。
try: # removes output noise for empty slice
mean = np.mean(array)
except:
mean = 0