我理解为什么存储"标准"类型的numpy数组几乎总比包含相同数据类型的列表更有效率。因此,养成使用numpy数组处理简单问题的习惯是更好的选择,对吗?
但是,与使用列表相比,我想知道将自定义类实例“存储”到numpy数组中使用的优缺点是什么。
请考虑以下内容:
import numpy as np
class Foo:
def __init__(self, name):
self.name = name
class Bar:
def __init__(self, name):
self.name = name
self.myFoos = np.zeros(0, dtype = Foo)
def add_foo(self, some_foo):
self.myFoos = np.append(self.myFoos, some_foo)
我可以很好地使用
self.myFoos = []
在做出这个决定时,我应该注意什么?
Foo类的复杂性是否会有很大的影响? (在我的用例中,它包含大约20到30个标准类型,一两个固定大小的整数数组,然后大约10个简单的方法。)
myFoos中通常有多少个Foos是否会有影响? (在我的用例中,它将是零到十个)
myFoos被处理的次数是否会有影响? (在我的实际用例中,在用户操作之间可能会被调用10到20次。)
附:虽然代码运行良好,但pyCharm不喜欢最后一个append语句,它警告我:
Expected type 'Union[ndarray, iterable]' got 'Foo' instead.
提前致谢!
dtype=Foo
并不是你想象中的那样。 - user2357112