访问对象数据切片numpy阵列
问题描述:
所以我正在通过使用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”?
感谢, 凯尔
答
你为什么要使用一个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]]
啊,这是有道理的。没有意识到numpy数组不应该存储对象。那么对于每个循环都没有办法避免使用对象? –
即使语法相似,我所用的列表理解实际上并不是一个for循环 – user3684792
是的,只是注意到了这一点。它的速度明显快于我的原始循环。非常感谢你的帮助! –