簡體   English   中英

計算每行中等於每行中第一個元素的元素數

[英]Count number of elements in each row equal to the first element in each row

a = np.array((['1', '1', '1', '2'],
              ['3', '3', '3', '3'], 
              ['2', '1', '1', '2'], 
              ['1', '3', '1', '2']))

我正在尋找一種方法(而不是遍歷數組)來計算每行中等於該行第一個元素的元素數。 即在第一行中,第一個元素是'1' ,並且該值還有2次出現。 最后的結果應該是:

result = [2, 3, 1, 1]

我的數組可能非常大,因此遍歷每一行會很慢。

您可以使用列表理解來做到這一點:

result = [list(a[i,:]).count(a[i,0])-1 for i in range(a.shape[0])]
print(result)

這給了我:

[2, 3, 1, 1]

與切片a[..., 0]進行比較。 Append 一個新軸,使其再次具有正確的尺寸。

result = (a == a[..., 0][..., np.newaxis]).sum(axis=-1) - 1

...確保這適用於任何維度的 arrays,而使用:僅適用於 2D。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM