2016-04-15 83 views
2

所以我正在通过使用numpy数组而不是每个循环来优化一些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] 

如果这是不可能以这种方式,我将如何有效地产生,而不使用每个循环,通过“AR”环我“INT_ARRAY”变量,从每个条目集“the_int”?

感谢, 凯尔

回答

2

你为什么要使用一个numpy的阵列来存储PyObjects?你不会得到你认为的性能改进。请参阅here

使用列表,你可以使用列表理解来代替:

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]] 
+0

啊,这是有道理的。没有意识到numpy数组不应该存储对象。那么对于每个循环都没有办法避免使用对象? –

+1

即使语法相似,我所用的列表理解实际上并不是一个for循环 – user3684792

+0

是的,只是注意到了这一点。它的速度明显快于我的原始循环。非常感谢你的帮助! –