PyTables 2.2.1 w/Python 2.6 kullanıyorum ve değişken uzunluklu iç içe geçmiş diziler içeren bir tablo oluşturmak istiyorum.PyTables'ta, değişken uzunluklu yuvalanmış dizi nasıl oluşturulur?
PyTables belgelerini aradım ve öğretici örneği (PyTables Tutorial 3.8), yuvalanmış bir uzunluk dizisi = 1'in nasıl oluşturulacağını gösterir. Ancak bu örnekte, değişkenlere ait bir satır sayısını veriye nasıl ekleyebilirim? Info2/info3/x 've' info2/info3/y '? belki daha kolay bir anlama tablo yapısı için
, burada benim homegrown örnek: Ben böyle bir yapı mümkün değildir PyTables docs herhangi bir gösterge bulamadık
"""Desired Pytable output:
DIEM TEMPUS Temperature Data
5 0 100 Category1 <--||--> Category2
x <--| |--> y z <--|
0 0 0
2 1 1
4 1.33 2.67
6 1.5 4.5
8 1.6 6.4
5 1 99
2 2 0
4 2 2
6 2 4
8 2 6
5 2 96
4 4 0
6 3 3
8 2.67 5.33
Note that nested arrays have variable length.
"""
import tables as ts
tableDef = {'DIEM': ts.Int32Col(pos=0),
'TEMPUS': ts.Int32Col(pos=1),
'Temperature' : ts.Float32Col(pos=2),
'Data':
{'Category1':
{
'x': ts.Float32Col(),
'y': ts.Float32Col()
},
'Category2':
{
'z': ts.Float32Col(),
}
}
}
# create output file
fpath = 'TestDb.h5'
fh = ts.openFile(fpath, 'w')
# define my table
tableName = 'MyData'
fh.createTable('/', tableName, tableDef)
tablePath = '/'+tableName
table = fh.getNode(tablePath)
# get row iterator
row = table.row
for i in xrange(3):
print '\ni=', i
# calc some fake data
row['DIEM'] = 5
row['TEMPUS'] = i
row['Temperature'] = 100-i**2
for j in xrange(5-i):
# Note that nested array has variable number of rows
print 'j=', j,
# calc some fake nested data
val1 = 2.0*(i+j)
val2 = val1/(j+1.0)
val3 = val1 - val2
''' Magic happens here...
How do I write 'j' rows of data to the elements of
Category1 and/or Category2?
In bastardized pseudo-code, I want to do:
row['Data/Category1/x'][j] = val1
row['Data/Category1/y'][j] = val2
row['Data/Category2/z'][j] = val3
'''
row.append()
table.flush()
fh.close()
... ama durum böyle Yapı aslında mümkün değil, değişken uzunlukta iç içe geçmiş sütunlara alternatiflerim nelerdir?
- EArray? VLArray? Öyleyse, bu veri türlerini yukarıda açıklanan yapıya nasıl entegre edebiliriz?
- başka bir fikir?
Her türlü yardım büyük önem taşır!
DÜZENLEME/ek bilgi w:
PyTables Mail Forum - Hierachical Datasets
Yani herkes benzer bir oluşturmak için bir yolunu bulmuş: PyTables gurular zaten "Böyle bir yapı mümkündür" sorusunu ele anlaşılıyor PyTable veri yapısı?
Tekrar teşekkürler!
Teşekkür: satır Eğer DB'den okunan tek bir satır olduğunu varsayalım! Ek olarak, posta listesi bağlantısında Francesc'den başka bir ilginç 'nuggets' bilgelik var. Sonunda, hız ile ilgilendiğim ve basitliği koruduğum için, yastıklı ekstra alanla sabit dizi boyutunu seçtim. – plmcw