[英]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.