Python 访问对象数据切片numpy数组

Python 访问对象数据切片numpy数组,python,arrays,numpy,optimization,Python,Arrays,Numpy,Optimization,因此,我正在通过使用numpy数组而不是for-each循环来优化一些python代码。在对numpy数组进行切片期间,是否有任何方法可以访问类中的字段 class foo: the_int = 0 def __init__(self, i): self.bar = i one, two = foo(5), foo(10) ar = array([one, two]) int_array = ar[0:2].the_int #I want int_arr

因此,我正在通过使用numpy数组而不是for-each循环来优化一些python代码。在对numpy数组进行切片期间,是否有任何方法可以访问类中的字段

class foo:

    the_int = 0

    def __init__(self, i):
        self.bar = i

one, two = foo(5), foo(10)
ar = array([one, two])

int_array = ar[0:2].the_int

#I want int_array = [5, 10]
如果以这种方式不可能,我如何高效地生成“int_数组”变量,而不使用for each循环通过“ar”,从每个条目收集“int”

谢谢,
Kyle

为什么要使用numpy数组来存储PyObjects?你不会得到你认为的性能提升。看

使用列表,您可以使用列表理解:

class foo:

    the_int = 0

    def __init__(self, i):
        self.bar = i

one, two = foo(5), foo(10)

ar = [one, two]

int_array = [i.bar for i in ar[0:2]]

啊,这是有道理的。没有意识到numpy数组不应该存储对象。所以对于对象没有办法避免for-each循环?即使语法相似,我使用的列表理解实际上不是for-each循环是的,只是注意到了这一点。它比我原来的for循环快得多。非常感谢你的帮助!有些东西,
for loop
或其他,必须查询每个对象(或列表或数组)的
bar
属性。您的对象已经用Python编码,所以查询是一个Python操作。