मैं PyTables 2.2.1 w/पायथन 2.6 का उपयोग कर रहा हूं, और मैं एक सारणी बनाना चाहता हूं जिसमें परिवर्तनीय लंबाई के नेस्टेड सरणी शामिल हैं।PyTables में, चर लंबाई की नेस्टेड सरणी कैसे बनाएं?
मैंने पीईटीबेल दस्तावेज़ों की खोज की है, और ट्यूटोरियल उदाहरण (PyTables Tutorial 3.8) दिखाता है कि लंबाई = 1 की नेस्टेड सरणी कैसे बनाएं। लेकिन इस उदाहरण के लिए, मैं डेटा 'info2/info3 पर पंक्तियों की एक चर संख्या कैसे जोड़ूं/एक्स 'और' info2/info3/y '?
शायद एक आसान समझने के लिए तालिका संरचना के लिए, यहाँ मेरी देसी उदाहरण है:
"""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()
मैं PyTables डॉक्स कि इस तरह की संरचना संभव नहीं है में कोई संकेत नहीं मिला है ... लेकिन इस मामले में इस तरह के एक संरचना वास्तव में संभव नहीं है, परिवर्तनीय लंबाई घोंसला वाले कॉलम के मेरे विकल्प क्या हैं?
- ईएरे? VLArray? यदि हां, तो उपरोक्त वर्णित संरचना में इन डेटा प्रकारों को एकीकृत कैसे करें?
- कुछ अन्य विचार?
किसी भी सहायता की बहुत सराहना की जाती है! डब्ल्यू
संपादित करें/अतिरिक्त जानकारी: ऐसा प्रतीत होता है PyTables गुरु पहले से ही संबोधित किया है कि "इस तरह की संरचना संभव है" प्रश्न:
PyTables Mail Forum - Hierachical Datasets
तो किसी को भी एक अनुरूप बनाने के लिए एक तरीका खोज निकाला गया है PyTable डेटा संरचना?
फिर से धन्यवाद!
सुझाव के लिए धन्यवाद! इसके अतिरिक्त, मेल-लिस्ट लिंक में फ्रांसेस्क से ज्ञान के कई अन्य रोचक 'नगेट्स' हैं। अंत में, क्योंकि मैं गति से सादगी और सादगी बनाए रखने के लिए चिंतित था, मैंने गद्दीदार अतिरिक्त जगह के साथ निश्चित सरणी आकार का चयन किया। – plmcw