我有以下课程:
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 的实例。
答案 0 :(得分:3)
.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
。