あんまり大した話じゃないんですけど(大したことを書いたことがないですが(^_^;))
次のような、2次元のNumpyの配列(ndarray)があった時に
pieces = np.array([
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]
])
行、列のどちらにも一個しか1が存在しないのが正しい状態で、2個以上の場合は、エラーを出す、という必要がありました。
import numpy as np
pieces = np.array([
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]
])
list1 = np.count_nonzero(pieces, axis=0)
print(list1)
list2 = np.count_nonzero(pieces, axis=1)
print(list2)
morethan_one_column = [i for i in list1 if i > 1 ]
print(morethan_one_column)
if morethan_one_column:
print("あかーん")
morethan_one_row = [i for i in list2 if i > 1 ]
print(morethan_one_row)
if morethan_one_row:
print("あかーん")
one hotなどで、行の方向に1個だけしか存在してほしくない、という状況はえてしてあると思います。
私の場合は、列の方向にも1個だけしか存在してほしくない、という状況ですけど、行の場合だけなら上記の
np.count_nonzero(pieces, axis=1)
だけでコト足りてます。
axisという引数は、軸ですが、軸の数え方、いつも間違いそうになりますけど、この2次元配列の場合、縦に並んでいるのが0軸です!!
下記にも count_nonzero は紹介してまして、実際のところ、下記の記事みてやり方思い出したって次第です。