我確信這是一個已經回答的問題,但我找不到任何地方。
我想檢查 2D numpy 陣列每一行的所有元素是否相同,并且有可能為 0。
例如:
>>> a = np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 3]])
>>> a
array([[0, 0, 0],
[1, 1, 1],
[2, 2, 2],
[3, 3, 3]])
>>> function_to_find(a)
True
環顧四周,有使用all()and的建議any(),但我認為這不是我的情況。
如果我以這種方式使用它們:
>>> a = np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 3]])
>>> a.all()
False
>>> a.all(axis=1)
array([False, True, True, True])
>>> a.all(axis=1).any()
True
但這也給我True,我想要False:
>>> a = np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 5]])
>>> a.all()
False
>>> a.all(axis=1)
array([False, True, True, True])
>>> a.all(axis=1).any()
True
一個解決方案可能是:
results_bool = np.array([])
for i in a:
results_bool = np.append(results_bool, np.all(i == i[0]))
result = np.all(results_bool)
但我更愿意避免回圈并使用numpy.
任何想法?
uj5u.com熱心網友回復:
您可以簡單地執行以下操作:
result = (a[:, 1:] == a[:, :-1]).all()
或者,通過廣播:
result = (a[:, 1:] == a[:, [0]]).all()
result = (a == a[:, [0]]).all()類似,但上面避免了列a[:,0]與其自身的冗余比較。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/535322.html
標籤:Python数组麻木的
