簡體   English   中英

如何獲取具有唯一列值的行數(按其他列值分組)?

[英]How to get number of rows with a unique column value (grouped by an other column value)?

考慮以下數組:

x = np.array([[1, 1],[1, 1], [1, 2], [1, 2], [1, 2],
              [2, 3], [2, 3], [2, 3], [2, 4], [2, 4]])

x
Out[12]: 
array([[1, 1],
       [1, 1],
       [1, 2],
       [1, 2],
       [1, 2],
       [2, 3],
       [2, 3],
       [2, 3],
       [2, 4],
       [2, 4],
       [2, 5],
       [2, 5],
       [2, 5]])

如何獲得每個第 1 列值的唯一第 2 列值的數量?

例如:如果可以使用 function V 完成,則 V(x) = [2, 3]。

我已經使用 for 循環實現了這一點。 但是,它似乎比必要的復雜並且花費了太多時間(當應用於比這個示例大得多的實際數據集時)。

我對性能感興趣,並且願意為了速度而犧牲代碼清晰度(盡管它們通常是直接相關的。)。

使用numpy.unique兩次:

import numpy as np

x = np.array([[1, 1],[1, 1], [1, 2], [1, 2], [1, 2],
              [2, 3], [2, 3], [2, 3], [2, 4], [2, 4]])

# drop duplicates
xx = np.unique(x, axis=0)

# count the first column
values, counts = np.unique(xx[:,0], return_counts=True)

print(values)
print(counts)

# [1, 2]
# [2, 2]

暫無
暫無

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

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