我有以下课程:
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 array或pandas.DataFrame
可能会更好。关于python - 如何在带有类实例的数组中使用np.where()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37195111/