如何获得具有唯一列值(按其他列值分组)的行数?

时间:2020-06-28 16:38:45

标签: python numpy

考虑以下数组:

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列值?

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

我已经使用for循环实现了这一点。但是,这似乎比必需的更为复杂,并且花费了太多的时间(应用于我的实际数据集时,该数据集比此示例大得多)。

我对性能感兴趣,并且愿意牺牲代码的清晰度来提高速度(尽管它们通常是直接相关的!)。

1 个答案:

答案 0 :(得分:3)

两次使用numpy.unique

public static int search(){
    int none = 55;
    Scanner user = new Scanner(System.in);
    System.out.println("Enter a bedroom number ");
    int bedroom = user.nextInt();
    System.out.println("Enter a bathroom number ");
    int bathroom = user.nextInt();
    System.out.println("Enter your rental budget");
    int rentalAmount = user.nextInt();
    
    for( int x = 0; x < object.length;++x){
        if(object[x].getNumBathrooms() == bathroom && object[x].getNumBedrooms() == bedroom  
                && (object[x].getRentalAmount() <= rentalAmount)){
                                 return x;
        }else{
            return none;           
        }
    }
}
相关问题