我有以下课程:

class IdFuns(object):
    def __init__(self,i,p,v,u):
        self.i = i
        self.p = p
        self.v = v
        self.u = u


当我放入循环中时,将得到带有类实例的以下数组:

   array([
   <__main__.IdFuns object at 0x7fc8362e8250>,
   <__main__.IdFuns object at 0x7fc8362e8290>,
   <__main__.IdFuns object at 0x7fc8362e82d0>,
   <__main__.IdFuns object at 0x7fc8362e8310>,
   <__main__.IdFuns object at 0x7fc8362e8350>,
   <__main__.IdFuns object at 0x7fc8362e8390>,
   <__main__.IdFuns object at 0x7fc8362e83d0>,
   <__main__.IdFuns object at 0x7fc8362e8410>,
   <__main__.IdFuns object at 0x7fc8362e8450>,
   <__main__.IdFuns object at 0x7fc8362e8490>,
   <__main__.IdFuns object at 0x7fc8362e84d0>,
   <__main__.IdFuns object at 0x7fc8362e8510>,
   <__main__.IdFuns object at 0x7fc8362e8550>], dtype=object)


我想知道如何使用np.where()搜索是否有例如.i = 1的实例。

最佳答案

.i是对象数组中各个项目的属性,而不是数组本身。因此,您需要使用Python遍历这些项目,例如使用列表推导:

bool_idx = [item.i == 1 for item in object_array]


然后可以将其作为第一个参数传递给np.where

locs = np.where(bool_idx)




通常,我建议您避免使用np.object数组。由于它们不支持向量化操作,因此与标准的Python list相比,它们实际上并没有提供任何显着的性能改进。在我看来,使用structured numpy arraypandas.DataFrame可能会更好。

关于python - 如何在带有类实例的数组中使用np.where()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37195111/

10-11 17:17