我正在用numpy ORM构建数据模拟框架,在这里使用类和对象比直接处理numpy数组要方便得多。尽管如此,模拟的输出应该是numpy数组。此外,blockz作为后端也非常有趣。
我想将所有对象属性映射到numpy数组。因此,numpy数组对我的类来说就像一个面向列的“持久”存储。我还需要将“新”属性链接到可以使用numpy(熊猫)框架计算的对象。然后使用相同的后端将它们链接到相应的对象。
这种方法有什么解决办法吗?你能推荐以高性能的方式建造它吗?我只找到了姜戈熊猫。PyTables在添加新列属性方面非常缓慢。
类似于(处理指向np_array的指针):
class Instance()
def __init__(self, np_array, np_position):
self.np_array = np_array
self.np_position = np_position
def get_test_property():
return(self.np_array[np_position])
def set_test_property(value):
self.np_array[np_position] = value
发布于 2014-11-17 14:47:04
实际上,有一种方法可以通过引用更改NumPy或bcolz数组。下面的代码中可以找到简单的示例。
a = np.arange(10)
class Case():
def __init__(self, gcv_pointer):
self.gcv = gcv_pointer
def gcv(self):
return(self.gcv)
def gcv_set(self, value):
self.gcv[:] = value
pass
#===============================================================================
# NumPy
#===============================================================================
caseList = []
for i in range(1, 10):
case = Case(a[i-1:i])
caseList.append(case)
gcvs = [case.GetGCV() for case in caseList]
caseList[1].SetGCV(5)
caseList[1].SetGCV(13)
caseList[1].gcv[:] = 6
setattr(caseList[1], 'dpd', a[5:6])
caseList[1].dpd
caseList[1].dpd[:] = 888
https://stackoverflow.com/questions/26963189
复制相似问题